Hallo, es ist schon eine Weile her, seit ich einen Blogbeitrag geschrieben habe; Nun, hier schreibe ich über eines der schwierigsten Probleme, auf die ich gestoßen bin, und einen Überblick darüber, wie ich es gelöst habe.
Herausforderungen, insbesondere solche, die Sie auf Trab halten, können Sie sich als Backend-Entwickler nicht entziehen. Als ich kürzlich an einem Werbenetzwerk mit PHP und MySQL arbeitete, stieß ich auf ein komplexes Problem im Zusammenhang mit der Optimierung der Cost Per Mille (CPM) für Publisher anhand bestimmter Kriterien. Dieses Problem stellte meine technischen Fähigkeiten auf die Probe und bot eine unschätzbar wertvolle Lernerfahrung. In diesem Beitrag werde ich Ihnen Schritt für Schritt zeigen, wie ich dieses Problem gelöst habe, und die Herausforderungen sowie die umgesetzten Lösungen hervorheben. Ich freue mich, wenn ich Vorschläge für eine effiziente Umsetzung oder eine bessere Vorgehensweise bekomme.
Die Aufgabe bestand darin, den CPM des Publishers anhand der folgenden Kriterien anzupassen:
Bevor ich mit der Implementierung begann, brauchte ich ein klares Verständnis der Anforderungen. Ich habe mit den Stakeholdern gesprochen, um die Kriterien und das gewünschte Verhalten für die Anpassung des CPM zu bestätigen. Dieser erste Schritt war entscheidend für die effektive Planung der Lösung.
Ich habe meine Datenbank und Tabellen bereits erstellt, außerdem war das Projekt bereits live, sodass ich nur noch die Kriterien hinzufügen musste. Ich habe dafür gesorgt, dass die Datenbank und die Tabelle so eingerichtet sind, dass sie die für die Klickverfolgung erforderlichen Informationen speichern und aufnehmen. Das Tabellenschema enthielt Felder zum Speichern des Klick-Zeitstempels, der IP-Adresse und des Ländercodes (es gibt andere Felder/Spalten, die ich nicht einschließen würde, da sie für den Zweck dieses Beitrags nicht wirklich wichtig sind).
Als nächstes habe ich eine Funktion implementiert, um die IP-Adresse und den Ländercode abzurufen und zu speichern, wann immer ein Nutzer auf eine Anzeige klickt. Diese Daten wurden in der Klicktabelle gespeichert.
Nachdem die Daten erfasst waren, bestand der nächste Schritt darin, die Logik zu implementieren, um die Kriterien zu überprüfen und den CPM entsprechend anzupassen.
/** * 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; }
Für diesen Teil aktualisiere ich den CPM des Publishers und verwende ihn, um seine Einnahmen für diesen bestimmten Klick zu berechnen.
Durch die Implementierung dieser Lösung passt das Werbenetzwerk den CPM nun dynamisch basierend auf den Klickdaten des Benutzers an. Dies gewährleistet ein faires und optimiertes Umsatzmodell für Publisher und steigert die Gesamteffektivität des Werbenetzwerks.
Ich bin Kingsley Gbutemu Kefas, ein Backend-Entwickler mit Leidenschaft für den Aufbau skalierbarer und effizienter Systeme. Ich bin ein Problemlöser, ich liebe es, neue Dinge und Vorgehensweisen zu lernen. Als Entwickler motiviert es mich, Herausforderungen zu lösen, insbesondere komplexe, die mich zum kritischen Denken anregen. Ich weiß, dass das HNG-Praktikum für mich eine Gelegenheit ist, mich als Entwickler weiterzuentwickeln, indem ich an realen Projekten arbeite und von Branchenexperten lerne. Ich freue mich darauf, meine Reise mit HNG Internship zu beginnen und einen Beitrag zur Tech-Community zu leisten. Ich glaube, dass diese Reise meine Fähigkeiten verbessern und zu wirkungsvollen Projekten beitragen wird, und ich bin sicher, dass ich noch mehr von den Vorteilen von HNG Premium profitieren werde.
Das obige ist der detaillierte Inhalt vonWie ich ein herausforderndes Backend-Problem mit PHP und MySQL gelöst habe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!