我正在开发一个需要活动的网络应用程序。用户在特定时间创建事件,我需要执行脚本并在确切时间激活事件,因此事件可以开始。 有关如何做到这一点的任何想法?我搜索并搜索堆栈溢出,但我遇到的只是在特定时间多次执行。我需要的是在自动设定的时间执行。 希望你帮助我,我很绝望。
答案 0 :(得分:8)
您有3个选项。我的建议:如果可以,请使用cron,如果必须,请使用用户驱动程序,并将守护程序作为最后的手段。
(1)cron(如评论中所述)
cron是Linux系统的调度程序,它将在您的系统上运行命令行作业。您通过ssh登录服务器,键入crontab -e
,然后添加如下所示的行:
4 5 * * * php /path/to/my/script.php
这将在每天凌晨5:04运行脚本。
<?php
// /path/to/my/script.php
// Do something
某些托管服务允许使用GUI输入cron作业。还有外部cron服务,它会在特定时间为您调用URL。
(2)守护程序
这是最高级的选项,也是最不可靠的选项:运行包含无限循环的命令行脚本。然后脚本定期检查状态并响应它。因为它可能会在运行数月后崩溃,所以必须有第二个脚本才能重新启动它。这是很多工作,但它是最灵活的方法。
<?php
while (1) {
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
sleep(5);
}
第3。用户驱动
如果您的网站上拥有相当数量的流量,那么只要没有更多输出,您就可以在页脚中包含这个作业。确保此代码快速,或者不幸的用户将等待它。
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
我还没有亲自在another stack overflow question中测试过“用户驱动”的更多花哨方法。
答案 1 :(得分:1)
您正在寻找的是CRON JOBS
http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/