Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php cron作业是否会终止最后一次cron执行?_Php_Cron_Scheduled Tasks - Fatal编程技术网

Php cron作业是否会终止最后一次cron执行?

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分钟运行一次,这很

我有一个cron任务,它执行一个PHP脚本。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
本身不会停止运行作业的前一个实例,因此,如果出现问题,几乎可以肯定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不会终止进程。脚本(或脚本正在调用的东西)正在以自己的方式进行。