【发布时间】:2023-05-19 01:35:02
【问题描述】:
我正在使用 PHP,并设置了一些 Windows 计划任务来运行具有类似内容的 .bat 文件
"C:\PHP\php.exe" "C:\inetpub\wwwroot\cron\run-me.php"
在其中。这些都很好用,我已将任务设置为每 30 分钟运行一次。 'run-me.php' 文件包含检查记录结束日期的脚本,如果结束日期比现在短(脚本中还有很多功能,如发送电子邮件等),则它们会过期。同样,它们都工作得很好。
因为脚本仅每 30 分钟运行一次,所以我还希望在网站上有访问者时执行脚本,所以基本上在每个页面加载时,检查结束项目,使它们过期,继续加载以保持所有记录迄今为止。我在 windows 任务中执行的原因是因为可能有几个小时没有任何访问者,所以我需要使记录过期并发送电子邮件。
现在,我遇到的问题是,如果 windows 任务正在运行并且访问者重新加载页面,我会遇到双重脚本被执行,因为我经常收到内容相同的双重电子邮件。
我的 Windows 任务只允许执行单个实例,如果运行时间超过 5 分钟,它将被强制停止。
我的问题是:
- 我能否从我的 PHP 脚本执行 Windows 计划任务,以便只执行同一脚本的一个实例?
- 我在数据库中使用 MySQL,我是否应该锁定该行以使其他任何东西都无法对其执行任何操作,从而允许执行第一次访问记录的脚本?
【问题讨论】:
标签: php scheduled-tasks