我有一个Python脚本可以转换PDF文件。它在我的Laravel应用程序通过PHP叫:为什么从PHP调用长时间运行的Python脚本失败
$command = escapeshellcmd("python /home/forge/default/pdf.py " . $id);
$output = shell_exec($command);
这正常工作与任何PDF为250MB,但未能有较大的PDF,例如500MB的。
如果我直接从命令行调用Python脚本,它工作正常,并在大约5分钟内完成。只有在被shell_exec
调用时才会失败。
这是发生在Laravel排队的工作,所以据我所知不使用HTTP/PHP FPM,但命令行,应该没有超时?
Laravel队列工作器在超时设置为0(无超时)的情况下运行。
在PHP CLI设置中是否还有其他可能导致失败的问题?是否有任何知道错误记录的地方 - failed_jobs
表中没有任何内容,laravel.log
中没有任何内容,我的Bugsnag集成没有任何内容。
由于它从命令行运行良好,我猜这不是Python问题,而是与从PHP调用它有关。
服务器有60Gb的RAM,并且通过htop
观察进程,它永远不会超过RAM使用率的3%。难道还有其他一些硬编码的RAM限制吗?
我使用Laravel 5.4,Ubuntu服务器,Python 2.7.12。
嗯。我已经将内存设置为25000.执行时间为30 - 但是我有很多队列作业需要3-5分钟才能解决?我刚刚尝试设置执行时间为900(15分钟),并在大约5分钟后失败... – samiles
我试着将'php-cli'和'php-fpm' .ini文件设置为'memory_limit = 50000M'并且'max_execution_time = 3600',但脚本仍然在5分钟左右死亡:\没有错误,它只是从顶部消失,其余队列作业无法运行。 – samiles