我如何使用 PHP 和 MySQL php教程解决具有挑战性的后端问题

首页 2024-07-10 19:02:28

大家好,我已经很久没写博客了;嗯,我在这里写的是我遇到的最具挑战性的问题之一,以及我如何解决它的概述。

作为后端开发人员,挑战是不可避免的,尤其是那些会让你兴奋的挑战。最近,正在使用 PHP 和 MySQL 在开发广告网络的时候,我遇到了一个按照具体标准优化发布者每千次的成本。 (CPM) 复杂的相关问题。这个问题测试了我的技术能力,并提供了宝贵的学习经验。在本文中,我将向您介绍我如何逐步解决这个问题,重点介绍我面临的挑战和实施的解决方案。如果我能得到关于如何有效实施或更好方法的建议,我会很高兴的。

问题

任务是根据以下标准调整出版商的每千次显示费:

  1. 如果过去 10 每一分钟都有来源 10 个不同 IP 点击地址时,会增加 5%。
  2. 如果过去 10 分钟内同一 IP 地址有 5 点击次数,减少次数 8%。
  3. 如果同一国家连续来自同一国家 10 点击次数,增加次数 2%。
解决方案之旅 第 1 步骤:了解要求

在实施之前,我需要清楚地了解需求。为了确认调整,我与利益相关者进行了讨论 CPM 标准和预期行为。第一步对于有效规划解决方案至关重要。

立即学习“PHP免费学习笔记(深入);

第 2 步骤:设置数据库

我创建了数据库和表格,项目已经启动,所以我只需要添加条件。我确保数据库和表格已设置为存储和存储点击跟踪所需的信息。表架构包括存储点击时间戳和IP 地址和国家/地区代码的字段(还有其他字段/列,我不会包含这些字段/列,因为它们对本文的原因不重要)。

第 3 步骤:捕获点击数据

接下来,我在用户点击广告时实现了获取和保存的函数 IP 地址和国家/地区代码。数据存储在点击表中。

第 4 步骤:实施标准检查

捕获数据后,下一步是实施逻辑检查标准并相应调整 CPM。

  1. 检查唯一的 IP 地址 我使用 COUNT 函数和 DISTINCT 计算过去的关键字 10 分钟内唯一的 IP 地址,关键字计算组中每行的表达式,并返回唯一的非空值数量。
/*** 最近10分钟获得唯一IP地址的数量*/
$stmt = $pdo->准备("
    选择 COUNT(DISTINCT ip_address) AS unique_ips
    来自点击次数
    WHERE date_time >= NOW() - 间隔 10 分钟
”);
$stmt->execute();
$unique_ips = $stmt->fetchColumn();

如果($unique_ips >= 10){
    $cpm *= 1.05;
} 别的 {
    /*** 这里,点击同一IP地址检查我
     * 这是第二种情况
     * ...
     **/
}
  1. 检查重复的 IP 地址 接着,我用了 SQL COUNT 函数检查过去 10 是否在几分钟内重复或不是唯一的? IP 地址。
/*** 检查过去 10 不是分钟内唯一(重复)的(重复) IP 地址
 * 若条件确定,则 CPM 降低 8%*/
$stmt = $pdo->准备("
    选择 ip_address, COUNT(*) AS click_count
    来自点击次数
    WHERE 时间戳 >= NOW() - 间隔 10 分钟
    按 ip_address 分组
    点击次数 >= 5
”);
$stmt->execute();
$repeated_ips = $stmt->fetchAll();

if (count($repeated_ips) > 0) {
    $cpm *= 0.92;
} 别的 {
    /*** 在这里,我检查同一国家/地区的连续点击情况
     * 这是第三种情况
     * ...
     **/
}
  1. 在同一个国家/地区连续点击检查 在这里,我应用第三个标准,即在同一个国家/地区连续点击检查。
/*** 从同一个国家连续查看点击次数
 * 若条件确定,每千次展览费用增加 2%*/
$stmt = $pdo->准备("
    选择国家/地区代码
    来自点击次数
    ORDER BY 时间戳 DESC
    限制 10
”);
$stmt->execute();
$last_ten_clicks = $stmt->fetchAll(PDO::FETCH_COLUMN);

if (count(array_unique($last_ten_clicks)) === 1) {
    $cpm *= 1.02;
}
第 5 步骤:更新每千次显示费

对于这部分,我更新了出版商 CPM 并用它来计算他对特定点击的收入。

结果

通过实施此解决方案,广告网络现在可以根据用户的点击数据动态调整 CPM。这保证了出版商公平优化的收入模式,提高了广告网络的整体效率。

关于我,为什么选择,为什么选择 HNG 实习?

我是 Kingsley Gbutemu Kefas,后端开发人员热衷于构建可扩展、高效的系统。我是一个问题解决者,我喜欢学习新事物和做事的方法。作为一名开发人员,我的动力来自于解决挑战,尤其是那些让我批判性思考的复杂挑战。我知道 HNG 对我来说,实习是一个通过从事实际项目并向行业专家学习成长为开发人员的机会。我很高兴能开始 HNG 实习之旅,为技术社区做出贡献。我相信这次旅行会提高我的技能,为有影响力的项目做出贡献,我相信我会从 HNG Premium 受益更多的好处。

以上就是我怎么用 PHP 和 MySQL 详细解决具有挑战性的后端问题,请关注其他相关文章!


p

最新文章

  • 我如何使用 PHP 和 MySQL php教程解决具有挑战性的后端问题

  • 高效远程桌面虚拟机设置指南,轻松上手!

  • 电脑复制粘贴,轻松掌握,高效操作必学!

  • Win10禁用远程桌面,保障系统安全!

  • 远程桌面命令mstsc:全称解析与应用解释:此标题简明扼要地表达了“mstsc”作为远程桌面命令的全称解释与应用,满足了不超过20字、不含双引号的要求,同时采用了有说服力的语气。

  • Microsoft远程桌面:高效、稳定、无处不在的掌控

  • WPS解锁单元格,自由输入无限制!

  • 相关文章

  • 如何检查 MySQL 数据库和表大小-mysql教程

  • 了解 MySQL 查询优化器:COUNT(id) 与 COUNT(*)-mysql教程

  • 构建可重用 UI 套件的百分比-js教程

  • 如何使用 Passmps 掌握测试主题-js教程

  • 开始新事物的兴奋永远不会消失,尤其是当它涉及到图像时 HNG 在实践这样一个强化项目时, [https://hng.tech/internship 和 https://hng.tech/premium]。这就像再次参加编码训练营,但这次我有机会突破我的极限,加快学习。

    HNG 实习中真正让我兴奋的一个方面是它对 ReactJS 关注是一种广泛使用的关注 JavaScript 框架。作为一名全栈开发人员,我一直在寻求扩展我的技能, React 在前端开发领

  • React css教程中的样式

  • C 中的 atoi 和 strcat 函数-C

  • 在 PHP 中创建变量

    在 PHP 创建变量规则:

    1. 使用美元($)后跟随变量名称的变量声明
    2. 变量名必须从字母或下划线(_)开始
    3. 变量名区分大小写

    有效变量:

    $name = "Gunawan"; //有效的
    $Name = "古纳万"; //有效的
    $_name = "Gunawan; //有效
    

    无效变量:

    $4name = "Gunaw

  • PHP 如何提高代码的可维护性?-php教程

  • php框架和其他服务器端技术(例如node).js)比较-php教程

  • 适合新手学习的轻量级 Go 框架-Golang

  • golang 为了提高稳定性,框架提供了哪些新特性?-Golang