我有两个广告,并希望在相差8小时的情况下运行它们,意味着ad1
在脚本启动时立即启动,ad2
在指定为28800
秒后的8小时后启动。我正在寻找函数sleep()
和time_sleep_until()
,但有点混淆了如何在广告之间使用它们。
我的广告是在数组中定义的。此外,我在本地主机中尝试了一次sleep
功能,立即执行一个广告,在sleep(28800)
之后执行另一个广告,脚本继续执行并显示两个广告的输出。这可能是一个小问题,我没有正确应用逻辑。
答案 0 :(得分:2)
听起来有点混淆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,然后你可以选择要显示的内容。
不确定这会完全满足您的要求。如果没有,您可能需要涉及某种类型的数据库,并且有某种工作可以更新广告以便在某个时间间隔内投放(如果可能,我会避免这种情况)。
答案 1 :(得分:0)
你不应该长时间运行脚本。请改用cron。您可以在8小时差异的基础上调用相同的脚本,并基于数据库切换调用ad_1或ad_2。