Php cron作业是否会终止最后一次cron执行?
我有一个cron任务,它执行一个PHP脚本。cron设置为每分钟运行一次,这仅用于测试目的。它正在执行的PHP脚本旨在将用户上传到服务器上的视频转换为flash格式(例如…flv)。当通过命令行手动执行时,脚本执行得很好,但是当通过cron执行时,脚本启动得很好,但一分钟后就停止了 似乎在执行下一个cron时,它会“杀死”最后一个cron执行。 我添加了以下PHP函数:Php cron作业是否会终止最后一次cron执行?,php,cron,scheduled-tasks,Php,Cron,Scheduled Tasks,我有一个cron任务,它执行一个PHP脚本。cron设置为每分钟运行一次,这仅用于测试目的。它正在执行的PHP脚本旨在将用户上传到服务器上的视频转换为flash格式(例如…flv)。当通过命令行手动执行时,脚本执行得很好,但是当通过cron执行时,脚本启动得很好,但一分钟后就停止了 似乎在执行下一个cron时,它会“杀死”最后一个cron执行。 我添加了以下PHP函数: ignore_user_abort(true); 希望它不会中止最后一次执行,我测试了将cron设置为每5分钟运行一次,这很
ignore_user_abort(true);
希望它不会中止最后一次执行,我测试了将cron设置为每5分钟运行一次,这很好,但是视频转换可能需要5分钟以上,因此我需要弄清楚为什么在执行另一个cron时它会停止
任何帮助都将不胜感激
谢谢大家!
编辑:
我的cron看起来像:
*/1 * * * * php /path_to_file/convert.php
cron
本身不会停止运行作业的前一个实例,因此,如果出现问题,几乎可以肯定PHP中有什么东西在做这件事。您需要发布该代码。我认为cron不会杀死任何进程。然而,cron并不真正适合长时间运行的进程。这里可能发生的情况是,当脚本被多次执行时,它会将自己踩得到处都是。例如,两个PHP进程可能试图同时写入同一个文件
首先,确保您不仅查看php错误日志,还尝试从php文件本身捕获输出。例如:
*/1 * * * * * php /path/to/convert.php & >> /var/log/convert.log
您还可以使用一个简单的锁文件来确保convert.php不会执行多次。比如:
if (file_exists('/tmp/convert.lock')) {
exit();
}
touch('/tmp/convert.lock');
// convert here
unlink('/tmp/convert.lock');
不,不会的。通过创建脚本在每次运行时检查的锁定文件,可以防止第二个进程运行。如果文件存在,则不会运行。如果合适的话,这还应该与最长执行时间结合使用,这样一个进程就不会无限期地暂停未来的执行。锁定文件可以是一个名为/tmp/foo.lock的空纯文本文件。您检查过PHP错误日志了吗?您是否使用set_time_limit将时间限制设置为0?没有出现错误,我也将时间限制设置为0。我忘了在前面提到我的cron看起来像:**/1****php/path_to_file/convert.php谢谢!cron作业似乎没有覆盖上一次工作的内容,PHP代码中有一些错误。我添加了一个检查以确保它退出,但是添加了一个Sander提到的临时锁文件,效果非常好。谢谢cron不会终止进程。脚本(或脚本正在调用的东西)正在以自己的方式进行。