Hola, ha pasado un tiempo desde que escribí una publicación en el blog; bueno, aquí estoy escribiendo sobre uno de los problemas más desafiantes que encontré y una descripción general de cómo lo resolví.
Como desarrollador backend, no puedes escapar de los desafíos, especialmente aquellos que te entusiasmarán. Recientemente, mientras trabajaba en una red publicitaria usando PHP y MySQL, me encontré con un problema complejo relacionado con la optimización del costo por mil (CPM) para los editores según criterios específicos. Este problema puso a prueba mis habilidades técnicas y brindó una experiencia de aprendizaje invaluable. En esta publicación, le explicaré cómo resolví este problema paso a paso, destacando los desafíos que enfrenté y las soluciones implementadas. Estaré encantado si hay sugerencias que pueda recibir sobre cómo implementar de manera eficiente o una mejor manera de hacerlo.
La tarea consistía en ajustar el CPM del editor según los siguientes criterios:
Antes de lanzarme a la implementación, necesitaba tener una comprensión clara de los requisitos. Discutí con las partes interesadas para confirmar los criterios y el comportamiento deseado para ajustar el CPM. Este paso inicial fue crucial para planificar la solución de forma eficaz.
Ya tengo mi base de datos y tablas creadas, además, el proyecto ya estaba activo, así que solo necesitaba agregar los criterios. Me aseguré de que la base de datos y la tabla estuvieran configuradas para almacenar y acomodar la información necesaria para el seguimiento de los clics. El esquema de la tabla incluía campos para almacenar la marca de tiempo del clic, la dirección IP y el código de país (hay otros campos/columnas que no incluiría porque no son realmente importantes para el motivo de esta publicación).
A continuación, implementé una función para obtener y guardar la dirección IP y el código de país cada vez que un usuario hace clic en un anuncio. Estos datos se almacenaron en la tabla de clics.
Una vez capturados los datos, el siguiente paso fue implementar la lógica para verificar los criterios y ajustar el CPM en consecuencia.
/** * 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; }
Para esta parte, actualizo el CPM del editor y lo uso para calcular sus ganancias por ese clic en particular.
Al implementar esta solución, la red publicitaria ahora ajusta dinámicamente el CPM en función de los datos de clics del usuario. Esto garantiza un modelo de ingresos justo y optimizado para los editores, mejorando la eficacia general de la red publicitaria.
Soy Kingsley Gbutemu Kefas, un desarrollador backend apasionado por crear sistemas escalables y eficientes. Soy solucionador de problemas, me encanta aprender cosas nuevas y formas de hacer algo. Como desarrollador, me motiva resolver desafíos, especialmente aquellos complejos que me hagan pensar críticamente. Sé que HNG Internship es una oportunidad para crecer como desarrollador trabajando en proyectos del mundo real y aprendiendo de expertos de la industria. Estoy emocionado de comenzar mi viaje con HNG Internship y contribuir a la comunidad tecnológica. Creo que este viaje mejorará mis habilidades y contribuirá a proyectos impactantes y estoy seguro de que me beneficiaré más de los beneficios de HNG Premium.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3