مرحبًا، لقد مر وقت طويل منذ أن كتبت تدوينة؛ حسنًا، أنا هنا أكتب عن واحدة من أصعب المشكلات التي واجهتها ولمحة عامة عن كيفية حلها.
لا يمكن الهروب من التحديات، خاصة تلك التي ستجعلك تعمل بشكل جيد، كمطور للواجهة الخلفية. في الآونة الأخيرة، أثناء العمل على شبكة إعلانية باستخدام PHP وMySQL، واجهت مشكلة معقدة تتعلق بتحسين التكلفة لكل ألف ظهور (CPM) للناشرين بناءً على معايير محددة. اختبرت هذه المشكلة مهاراتي الفنية ووفرت لي تجربة تعليمية لا تقدر بثمن. في هذا المنشور، سأطلعك على كيفية حل هذه المشكلة خطوة بخطوة، مع تسليط الضوء على التحديات التي واجهتها والحلول التي تم تنفيذها. سأكون سعيدًا إذا كانت هناك اقتراحات يمكنني الحصول عليها حول كيفية التنفيذ بكفاءة أو طريقة أفضل للقيام بذلك.
كانت المهمة هي ضبط التكلفة لكل ألف ظهور للناشر بناءً على المعايير التالية:
قبل القفز إلى التنفيذ، كنت بحاجة إلى فهم واضح للمتطلبات. لقد ناقشت مع أصحاب المصلحة تأكيد المعايير والسلوك المطلوب لضبط التكلفة لكل ألف ظهور. وكانت هذه الخطوة الأولية حاسمة في التخطيط للحل بشكل فعال.
لقد قمت بالفعل بإنشاء قاعدة البيانات والجداول الخاصة بي، كما أن المشروع كان مباشرًا بالفعل، لذلك كنت بحاجة فقط إلى إضافة المعايير. لقد تأكدت من إعداد قاعدة البيانات والجدول لتخزين واستيعاب المعلومات الضرورية لتتبع النقرات. يتضمن مخطط الجدول حقولًا لتخزين الطابع الزمني للنقر وعنوان IP ورمز البلد (هناك حقول/أعمدة أخرى لن أدرجها لأنها ليست مهمة حقًا لسبب هذا المنشور).
بعد ذلك، قمت بتنفيذ وظيفة للحصول على عنوان 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 * ... **/ }
/** * 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; }
بالنسبة لهذا الجزء، أقوم بتحديث التكلفة لكل ألف ظهور للناشر واستخدامها لحساب أرباحه مقابل تلك النقرة المحددة.
من خلال تنفيذ هذا الحل، تقوم شبكة الإعلانات الآن بضبط التكلفة لكل ألف ظهور ديناميكيًا استنادًا إلى بيانات النقرات الواردة من المستخدم. وهذا يضمن نموذج إيرادات عادلًا ومُحسّنًا للناشرين، مما يعزز الفعالية الشاملة لشبكة الإعلانات.
أنا Kingsley Gbutemu Kefas، مطور الواجهة الخلفية الشغوف ببناء أنظمة فعالة وقابلة للتطوير. أنا أحل المشكلات، وأحب تعلم أشياء جديدة وطرق القيام بشيء ما. كمطور، يحفزني حل التحديات، خاصة تلك المعقدة التي تجعلني أفكر بشكل نقدي. أعلم أن HNG Internship يمثل فرصة بالنسبة لي للنمو كمطور من خلال العمل في مشاريع واقعية والتعلم من خبراء الصناعة. أنا متحمس لبدء رحلتي مع HNG Internship والمساهمة في مجتمع التكنولوجيا. أعتقد أن هذه الرحلة ستعمل على صقل مهاراتي والمساهمة في المشاريع المؤثرة وأنا متأكد من أنني سأستفيد أكثر من مزايا HNG Premium.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3