Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Saya Menyelesaikan Masalah Backend yang Mencabar dengan PHP & MySQL

Bagaimana Saya Menyelesaikan Masalah Backend yang Mencabar dengan PHP & MySQL

王林
Lepaskan: 2024-07-17 21:13:21
asal
1130 orang telah melayarinya

How I Solved a Challenging Backend Problem with PHP & MySQL

Salam, sudah agak lama saya tidak menulis catatan blog; Nah, di sini saya menulis tentang salah satu masalah paling mencabar yang saya hadapi dan gambaran keseluruhan tentang cara saya menyelesaikannya.

Cabaran terutamanya yang akan menyukarkan anda tidak boleh lari sebagai pembangun bahagian belakang. Baru-baru ini, semasa bekerja pada rangkaian iklan menggunakan PHP dan MySQL, saya menghadapi isu kompleks yang berkaitan dengan mengoptimumkan Cost Per Mille (CPM) untuk penerbit berdasarkan kriteria tertentu. Masalah ini menguji kemahiran teknikal saya dan memberikan pengalaman pembelajaran yang tidak ternilai. Dalam siaran ini, saya akan membimbing anda melalui cara saya menyelesaikan masalah ini langkah demi langkah, menyerlahkan cabaran yang dihadapi dan penyelesaian yang dilaksanakan. Saya akan gembira jika ada cadangan yang saya boleh dapatkan tentang cara melaksanakan dengan cekap atau cara yang lebih baik untuk melakukannya.

Masalahnya

Tugasnya adalah untuk melaraskan CPM penerbit berdasarkan kriteria berikut:

  1. 5% peningkatan jika terdapat klik daripada 10 alamat IP berbeza dalam 10 minit yang lalu.
  2. Penurunan 8% jika terdapat klik daripada alamat IP yang sama 5 kali dalam 10 minit terakhir.
  3. Peningkatan 2% jika terdapat 10 klik berturut-turut dari negara yang sama.

Perjalanan Penyelesaian

Langkah 1: Memahami Keperluan

Sebelum terjun ke dalam pelaksanaan, saya memerlukan pemahaman yang jelas tentang keperluan. Saya berbincang dengan pihak berkepentingan untuk mengesahkan kriteria dan tingkah laku yang diingini untuk melaraskan CPM. Langkah awal ini adalah penting dalam merancang penyelesaian dengan berkesan.

Langkah 2: Menyediakan Pangkalan Data

Saya sudah mempunyai pangkalan data dan jadual saya dibuat, juga, projek itu telah pun disiarkan, jadi saya hanya perlu menambah kriteria. Saya memastikan bahawa pangkalan data dan jadual telah disediakan untuk menyimpan dan menampung maklumat yang diperlukan untuk penjejakan klik. Skema jadual termasuk medan untuk menyimpan cap masa klik, alamat ip dan kod negara (terdapat medan/lajur lain yang saya tidak akan sertakan kerana ia tidak begitu penting untuk tujuan siaran ini).

Langkah 3: Menangkap Data Klik

Seterusnya, saya melaksanakan fungsi untuk mendapatkan dan menyimpan alamat IP dan kod negara apabila pengguna mengklik iklan. Data ini disimpan dalam jadual klik.

Langkah 4: Melaksanakan Pemeriksaan Kriteria

Dengan data ditangkap, langkah seterusnya ialah melaksanakan logik untuk menyemak kriteria dan melaraskan CPM dengan sewajarnya.

  1. Menyemak Alamat IP Unik Saya mengira alamat IP unik dalam 10 minit terakhir menggunakan fungsi COUNT dan kata kunci DISTINCT yang menilai ungkapan untuk setiap baris dalam kumpulan dan mengembalikan bilangan nilai unik dan bukan nol .
/** 
 * 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
     * ...
     **/
}
Salin selepas log masuk
  1. Menyemak Alamat IP Berulang Saya kemudian menyemak alamat IP berulang atau tidak unik dalam 10 minit terakhir menggunakan fungsi SQL COUNT.
/** 
 * 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
     * ...
     **/
}
Salin selepas log masuk
  1. Menyemak Klik Berturut-turut dari Negara Yang Sama Di sini, saya menggunakan kriteria ketiga iaitu menyemak klik berturut-turut dari negara yang sama.
/** 
 * 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;
}
Salin selepas log masuk

Langkah 5: Mengemas kini CPM

Untuk bahagian ini, saya mengemas kini CPM penerbit dan menggunakannya untuk mengira pendapatannya bagi klik tertentu itu.

Hasilnya

Dengan melaksanakan penyelesaian ini, rangkaian iklan kini melaraskan CPM secara dinamik berdasarkan data klik daripada pengguna. Ini memastikan model hasil yang adil dan dioptimumkan untuk penerbit, meningkatkan keberkesanan keseluruhan rangkaian iklan.

Mengenai Saya dan Mengapa HNG Internship?

Saya Kingsley Gbutemu Kefas, pembangun bahagian belakang yang bersemangat membina sistem berskala dan cekap. Saya seorang penyelesai masalah, saya suka belajar perkara baharu dan cara melakukan sesuatu. Sebagai pembangun, saya bermotivasi dengan menyelesaikan cabaran, terutamanya yang kompleks yang membuatkan saya berfikir secara kritis. Saya tahu HNG Internship ialah peluang untuk saya berkembang sebagai pembangun dengan mengusahakan projek dunia sebenar dan belajar daripada pakar industri. Saya teruja untuk memulakan perjalanan saya dengan HNG Internship dan menyumbang kepada komuniti teknologi. Saya percaya perjalanan ini akan mempertajam kemahiran saya dan menyumbang kepada projek yang memberi impak dan saya pasti bahawa saya akan mendapat lebih banyak manfaat daripada manfaat HNG Premium.

Atas ialah kandungan terperinci Bagaimana Saya Menyelesaikan Masalah Backend yang Mencabar dengan PHP & MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan