我有一个 php 脚本,需要每 5 分钟运行一次。目前我正在使用 cron 作业来运行它(并且效果很好),但我的主机只允许最短时间 15 分钟。
所以我的问题是,我可以使用访问者每5分钟触发一次php脚本的运行吗?我可以轻松地记录它上次运行的时间,并根据经过的时间重新运行它。
然而,我担心竞争条件。重要的是脚本只能运行once每 5 分钟一次。
我的脚本运行大约需要 60 秒。在此期间它会写入几个文件。如果脚本运行多次,就会损坏文件。另外,如果我在 10 分钟内没有访客,那么当下一个访客到达时运行一次就可以了。
有一些标准方法来完成这项任务吗?
Thanks!
您是否考虑过让您的脚本运行无限循环sleep
迭代之间等待 5 分钟?
for (;;)
{
perform_actions();
sleep(300);
}
或者,您可以拥有一个文件(例如 is_running),并获得独占的lock在最后发布的脚本开始时就可以使用它。至少这样你就不会做出任何破坏性的事情。
您也可以将这两种解决方案结合起来。
$fp = fopen("is_running", "r+");
/* is it already running? */
if (! flock($fp, LOCK_EX | LOCK_NB)) return;
for (;;)
{
perform_actions();
sleep(300);
}
然后让 cron 作业仍然每 15 分钟运行一次。如果该进程仍在运行,它将退出,否则它将重新启动并每 5 分钟恢复更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)