Mar*_*ark 1 php mysql events scheduled-tasks
我正在开发一个需要活动的网络应用程序.用户在特定时间创建事件,我需要执行脚本并在确切时间激活事件,因此事件可以开始.有关如何做到这一点的任何想法?我搜索并搜索堆栈溢出,但我遇到的只是在特定时间多次执行.我需要的是在自动设定的时间执行.希望你帮助我,我很绝望.
你有3个选择.我的建议:如果可以,请使用cron,如果必须,请使用用户驱动程序,并将守护程序作为最后的手段.
(1)cron(如评论中所述)
cron是Linux系统的调度程序,它将在您的系统上运行命令行作业.您通过ssh登录服务器,键入crontab -e并添加如下所示的行:
4 5 * * * php /path/to/my/script.php
Run Code Online (Sandbox Code Playgroud)
这将在每天凌晨5:04运行脚本.
<?php
// /path/to/my/script.php
// Do something
Run Code Online (Sandbox Code Playgroud)
某些托管服务允许使用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);
Run Code Online (Sandbox Code Playgroud)
}
3.用户驱动
如果您的网站上有大量的流量,只需在页面页脚中输入此作业就可以了.确保此代码快速,或者不幸的用户将等待它.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Run Code Online (Sandbox Code Playgroud)
还有更多花哨的"用户驱动"方法,我没有在另一个堆栈溢出问题中亲自测试过.
| 归档时间: |
|
| 查看次数: |
18900 次 |
| 最近记录: |