首頁 > 後端開發 > php教程 > 我該如何使用 PHP 和 MySQL 解決具有挑戰性的後端問題

我該如何使用 PHP 和 MySQL 解決具有挑戰性的後端問題

王林
發布: 2024-07-17 21:13:21
原創
1130 人瀏覽過

How I Solved a Challenging Backend Problem with PHP & MySQL

大家好,我已經有一段時間沒有寫部落格文章了;好吧,我在這裡寫的是我遇到的最具挑戰性的問題之一,以及我如何解決它的概述。

身為後端開發人員,挑戰尤其是那些會讓你興奮的挑戰是無法逃避的。最近,在使用 PHP 和 MySQL 開發廣告網路時,我遇到了一個與基於特定標準為發布商優化每千次成本 (CPM) 相關的複雜問題。這個問題考驗了我的技術能力,並提供了寶貴的學習經驗。在這篇文章中,我將向您介紹我如何逐步解決這個問題,重點介紹所面臨的挑戰和實施的解決方案。如果我能得到有關如何有效實施或更好的方法的建議,我將很高興。

問題

任務是根據以下標準調整發布商的每千次曝光費用:

  1. 如果過去 10 分鐘內有來自 10 個不同 IP 位址的點擊,則增加 5%。
  2. 如果過去 10 分鐘內來自相同 IP 位址的點擊 5 次,則減少 8%。
  3. 如果來自同一國家連續 10 次點擊,則增加 2%。

解決方案之旅

第 1 步:了解要求

在開始實施之前,我需要清楚地了解需求。我與利害關係人進行了討論,以確認調整 CPM 的標準和期望的行為。這第一步對於有效規劃解決方案至關重要。

第 2 步:設定資料庫

我已經建立了資料庫和表,而且該項目已經上線,所以我只需要添加條件。我確保資料庫和表已設定為儲存和容納點擊追蹤所需的資訊。表架構包含用於儲存點擊時間戳記、IP 位址和國家/地區代碼的欄位(還有其他欄位/列,我不會包含這些欄位/列,因為它們對於本文的原因並不重要)。

第 3 步:捕獲點擊數據

接下來,我實作了一個函數,用於在使用者點擊廣告時取得並保存 IP 位址和國家/地區代碼。此數據儲存在點擊表中。

第 4 步:實施標準檢查

捕獲資料後,下一步是實施邏輯來檢查標準並相應地調整 CPM。

  1. 檢查唯一的 IP 位址 我使用 COUNT 函數和 DISTINCT 關鍵字計算過去 10 分鐘內的唯一 IP 位址,該關鍵字計算群組中每一行的表達式並傳回唯一非空值的數量。
/** 
 * Get the count of unique IP addresses in the last 10 minutes
 */
$stmt = $pdo->prepare("
    SELECT COUNT(DISTINCT ip_address) AS unique_ips
    FROM clicks
    WHERE date_time >= NOW() - INTERVAL 10 MINUTE
");
$stmt->execute();
$unique_ips = $stmt->fetchColumn();

if ($unique_ips >= 10) {
    $cpm *= 1.05;
} else {
    /**
     * Here, I check for clicks from the same IP address
     * This is in the second condition
     * ...
     **/
}
登入後複製
  1. 檢查重複的 IP 位址 然後,我使用 SQL COUNT 函數檢查過去 10 分鐘內重複或不唯一的 IP 位址。
/** 
 * Checking non-unique (repeated) IP addresses in the last 10 minutes
 * If the condition is true, decrease the CPM by 8%
 */
$stmt = $pdo->prepare("
    SELECT ip_address, COUNT(*) AS click_count
    FROM clicks
    WHERE timestamp >= NOW() - INTERVAL 10 MINUTE
    GROUP BY ip_address
    HAVING click_count >= 5
");
$stmt->execute();
$repeated_ips = $stmt->fetchAll();

if (count($repeated_ips) > 0) {
    $cpm *= 0.92;
} else {
    /**
     * Here, I check for consecutive clicks from the same country
     * This is in the third condition
     * ...
     **/
}
登入後複製
  1. 檢查來自同一國家/地區的連續點擊 在這裡,我應用第三個標準,即檢查來自同一國家/地區的連續點擊。
/** 
 * Checking clicks from the same country consecutively
 * If the condition is true, increase the CPM by 2%
 */
$stmt = $pdo->prepare("
    SELECT country_code
    FROM clicks
    ORDER BY timestamp DESC
    LIMIT 10
");
$stmt->execute();
$last_ten_clicks = $stmt->fetchAll(PDO::FETCH_COLUMN);

if (count(array_unique($last_ten_clicks)) === 1) {
    $cpm *= 1.02;
}
登入後複製

第 5 步:更新每千次曝光費用

對於這一部分,我更新發布商的 CPM 並用它來計算他針對該特定點擊的收入。

結果

透過實施此解決方案,廣告網路現在可以根據使用者的點擊資料動態調整 CPM。這確保了發布商擁有公平且最佳化的收入模式,從而提高了廣告網路的整體效率。

關於我以及為什麼選擇 HNG 實習?

我是 Kingsley Gbutemu Kefas,一位熱衷於建立可擴展且高效系統的後端開發人員。我是一個問題解決者,我喜歡學習新事物和做事的方法。身為開發人員,我的動力來自於解決挑戰,尤其是那些讓我批判性思考的複雜挑戰。我知道 HNG 實習對我來說是一個透過從事實際專案並向行業專家學習來成長為開發人員的機會。我很高興能夠開始 HNG 實習之旅並為技術社群做出貢獻。我相信這趟旅程將提高我的技能並為有影響力的專案做出貢獻,我確信我將從 HNG Premium 的好處中受益更多。

以上是我該如何使用 PHP 和 MySQL 解決具有挑戰性的後端問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板