如何使用cron启动exec() PHP命令,但没有其中2个正在运行


How to start a exec() PHP command using a cron but not have 2 of them running?

我就是想不明白。我有一个从Facebook API获取数据的脚本,这个脚本一直在运行。(使用set_time_limit(0);

然而,有时Facebook API给出错误并停止脚本。因此,我希望每5分钟左右有一个cron任务,检查脚本是否仍在运行,如果没有,重新启动它。

我尝试了几件事,但它看起来像我不能运行exec()命令从一个cron作业,因为不同的用户权限或什么?你们会怎么做?

我使用CentOS和PHP 5.3+

在不同的用户(例如root)下设置cron,这将解决任何权限问题。然而,PeeHaa提出了一个很好的观点:如果这是一个cron脚本,就没有理由使用exec,因为exec的工作是向操作系统发送命令…这些命令可以直接从crontab中运行,而不是让cron执行PHP文件。

您可能想要创建一个更适合连续运行脚本的守护进程。您可以使用这个PEAR包System_Daemon

使用PHP创建一个

如果这个进程运行得非常频繁,那么在一个无限循环中运行它,然后让它休眠。不需要crontab

while(true) {
   //magical code stuff
   sleep(60);
}