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.
Tugasnya adalah untuk melaraskan CPM penerbit berdasarkan kriteria berikut:
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.
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).
Seterusnya, saya melaksanakan fungsi untuk mendapatkan dan menyimpan alamat IP dan kod negara apabila pengguna mengklik iklan. Data ini disimpan dalam jadual klik.
Dengan data ditangkap, langkah seterusnya ialah melaksanakan logik untuk menyemak kriteria dan melaraskan CPM dengan sewajarnya.
/** * 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 * ... **/ }
/** * 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 * ... **/ }
/** * 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; }
Untuk bahagian ini, saya mengemas kini CPM penerbit dan menggunakannya untuk mengira pendapatannya bagi klik tertentu itu.
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.
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!