Olá, já faz um tempo que não escrevi uma postagem no blog; bem, aqui estou escrevendo sobre um dos problemas mais desafiadores que encontrei e uma visão geral de como o resolvi.
Desafios, especialmente aqueles que vão deixar você nervoso, não podem ser evitados como desenvolvedor back-end. Recentemente, enquanto trabalhava em uma rede de anunciantes usando PHP e MySQL, encontrei um problema complexo relacionado à otimização do custo por mil (CPM) para editores com base em critérios específicos. Este problema testou minhas habilidades técnicas e proporcionou uma experiência de aprendizado inestimável. Neste post, explicarei passo a passo como resolvi esse problema, destacando os desafios enfrentados e as soluções implementadas. Ficarei feliz se houver sugestões sobre como implementar com eficiência ou sobre a melhor maneira de fazer isso.
A tarefa era ajustar o CPM do editor com base nos seguintes critérios:
Antes de iniciar a implementação, eu precisava de uma compreensão clara dos requisitos. Discuti com os stakeholders para confirmar os critérios e o comportamento desejado para ajuste do CPM. Esta etapa inicial foi crucial para planejar a solução de forma eficaz.
Já tenho meu banco de dados e tabelas criados, além disso, o projeto já estava ativo, então só precisei adicionar os critérios. Garanti que o banco de dados e a tabela estivessem configurados para armazenar e acomodar as informações necessárias para o rastreamento de cliques. O esquema da tabela incluía campos para armazenar o carimbo de data e hora do clique, endereço IP e código do país (há outros campos/colunas que eu não incluiria porque eles não são realmente importantes para a causa desta postagem).
Em seguida, implementei uma função para obter e salvar o endereço IP e o código do país sempre que um usuário clicar em um anúncio. Esses dados foram armazenados na tabela de cliques.
Com os dados capturados, o próximo passo foi implementar a lógica para verificar os critérios e ajustar o CPM de acordo.
/** * 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; }
Nesta parte, atualizo o CPM do editor e o uso para calcular seus ganhos para aquele clique específico.
Ao implementar esta solução, a rede de anunciantes agora ajusta dinamicamente o CPM com base nos dados de cliques do usuário. Isso garante um modelo de receita justo e otimizado para os editores, aumentando a eficácia geral da rede de anunciantes.
Sou Kingsley Gbutemu Kefas, um desenvolvedor backend apaixonado por construir sistemas escaláveis e eficientes. Sou um solucionador de problemas, adoro aprender coisas novas e maneiras de fazer algo. Como desenvolvedor, sou motivado por resolver desafios, principalmente os complexos que me fazem pensar criticamente. Eu sei que o estágio HNG é uma oportunidade para crescer como desenvolvedor, trabalhando em projetos do mundo real e aprendendo com especialistas do setor. Estou animado para iniciar minha jornada com o estágio HNG e contribuir com a comunidade de tecnologia. Acredito que esta jornada irá aprimorar minhas habilidades e contribuir para projetos impactantes e tenho certeza que me beneficiarei mais dos benefícios do HNG Premium.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3