我有一个执行 PHP 脚本的 cron 作业。 cron 设置为每分钟运行一次,这仅用于测试目的。它正在执行的 PHP 脚本旨在将用户上传到服务器的视频转换为 flash 格式(例如....flv)。当通过命令行手动执行该脚本时,该脚本执行得很好,但是当通过 cron 执行时,它启动正常,但一分钟后就停止了。
看起来,当执行下一个 cron 时,它会“杀死”最后一个 cron 执行。
我添加了以下 PHP 函数:
ignore_user_abort(true);
为了避免中止最后一次执行,我测试了将 cron 设置为每 5 分钟运行一次,效果很好,但是视频的转换可能需要 5 分钟以上,所以我需要弄清楚为什么当另一个 cron 运行时它会停止被执行。
任何帮助,将不胜感激。
谢谢你!
编辑:
我的 cron 看起来像:
*/1 * * * * php /path_to_file/convert.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');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)