PHP和Windows预定任务

时间:2013-03-06 21:42:29

标签: php scheduled-tasks

我正在使用PHP并设置了一些Windows计划任务来运行类似

的.bat文件
"C:\PHP\php.exe" "C:\inetpub\wwwroot\cron\run-me.php"

在他们中间。这些都很有效,我已经将任务设置为每30分钟运行一次。 'run-me.php'文件包含用于检查记录结束日期的脚本,如果结束日期小于现在,则会使它们过期(脚本中有更多功能,如发送电子邮件等)。再次,它们都很有效。

因为脚本每30分钟只运行一次,我还希望在网站上有访问者时执行脚本,所以基本上每次加载页面,检查结束项目,使它们过期,继续加载以保持所有记录至今。我在Windows任务中执行的原因是因为几个小时内可能没有任何访问者所以我需要使记录过期并发送电子邮件。

现在,我遇到的问题是,如果Windows任务正在运行且访问者重新加载页面,我会遇到正在执行的双重脚本,因为我经常收到内容相同的双重电子邮件。

我的Windows任务只允许执行单个实例,如果运行时间超过5分钟则强制停止。

我的问题是:

  1. 我可以从PHP脚本执行Windows计划任务,以便只执行同一脚本的一个实例吗?
  2. 我正在使用MySQL作为数据库,我应该锁定行,以便其他任何人都无法对其执行任何操作,从而允许执行首次访问记录的脚本吗?

1 个答案:

答案 0 :(得分:0)

使用交易应该可以解决问题。但是,我建议您只在cron(或Windows中的调度程序)中执行此操作,即使这意味着它每五分钟运行一次。