如何在 php 中的特定时间后在脚本中运行特定条件


How to run a specific condition in script after a specific time in php

我有两个广告,并希望在 8 小时之间运行它们,这意味着ad1脚本开始时立即启动,ad2在指定为 28800 秒的 8 小时后开始。我正在寻找sleep()time_sleep_until()的功能,但有点困惑如何在广告之间使用它们。

我的广告是在数组中定义的。此外,我曾经尝试过在我的本地主机中sleep函数立即执行一个广告,并在sleep(28800)后执行另一个广告,脚本继续执行并显示两个广告的输出。这可能是一个小问题,我没有正确应用逻辑。

听起来对于

PHP在这里实际负责做什么存在一些混淆。当有人向 Web 服务器发出请求时,正在调用 PHP 脚本,但在处理请求后,它完成并退出。当下一个请求进来时,它不知道第一个请求。

如果您使用 sleep(n) 函数休眠 n 秒,这将暂停 Web 服务器的响应,这是一个非常糟糕的主意,而不是您要实现的目标。

一般来说,如果你想根据时间切换一些内容,最好从服务器时间(这总是已知的)开始工作,而不是像"服务器运行了多长时间"这样在现实世界中没有意义的东西。

举一个简单的例子,假设您想根据 8 小时的屏蔽量投放 3 个不同的广告。您可以编写一些代码来查找一天中的小时,然后适当地选择广告。例如:

$selection = (date('G',time()) / 8);
switch ($selection) {
  case 0:
    echo 'ad option 1!';
    break;
  case 1:
    echo 'ad option 2!';
    break;
  case 2:
    echo 'ad option 3!';
    break;
}

date('G',time())函数返回当前系统时间的小时部分,即 0-23。将其除以 8 将得到 0、1 或 2,您可以从那里选择要显示的内容。

不确定这是否会完全满足您要做的事情。如果没有,您可能需要涉及某种数据库,并有某种工作来更新广告以在某个时间间隔投放(如果可能的话,我会避免这种情况)。

你不应该运行这么长时间的脚本。请改用 cron。您可以根据数据库切换调用ad_1或ad_2,以 8 小时的差异调用同一脚本。