我有两个广告,并希望在 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。您可以在 8 小时的不同时调用相同的脚本,并基于 db 开关调用 ad_1 或 ad_2。