我有一个php脚本需要每5分钟运行一次.目前我正在使用一个cron作业来运行它(并且效果很好)但是我的主机只允许最少15分钟的时间.
所以我的问题是,我可以使用访问者每5分钟触发一次php脚本的运行.我可以轻松记录上次运行的时间,并根据已用时间重新运行它.
但是,我担心比赛条件.重要的是脚本每5分钟才运行一次.
我的脚本大约需要60秒才能运行.在此期间它会写入几个文件.如果脚本多次运行,则会损坏文件.此外,如果我没有10分钟的输入,那么当下一个输入器到达时运行一次是好的.
有没有一些标准的方法来完成这项任务?
谢谢!
您是否考虑让脚本运行无限循环,并sleep在迭代之间等待5分钟?
for (;;)
{
  perform_actions();
  sleep(300);
}
或者,您可以拥有一个文件(例如,is_running),并在最后发布的脚本开头获取一个独占锁.至少这种方式你不会做任何破坏性的事情.
您也可以将这两种解决方案结合起来
$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分钟恢复一次.