为什么从PHP调用的长时间运行的Python脚本失败

时间:2017-05-18 08:03:55

标签: php python laravel shell-exec laravel-queue

我有一个Python脚本可以转换PDF文件。它在我的Laravel应用程序中通过PHP调用:

shell_exec

这适用于任何高达250MB的PDF,,但因较大的PDF而失败,例如500Mb。

如果我直接从命令行调用Python脚本,它可以正常工作并在大约5分钟内完成。只有当failed_jobs调用它才会失败。

这是在一个Laravel排队的工作中发生的,所以据我所知,不是使用HTTP / PHP FPM,而是命令行,它应该没有超时?

Laravel队列工作程序正在运行,超时设置为0(无超时)。

PHP CLI设置中还有什么可能导致此失败吗?有什么知道错误会被记录的地方 - laravel.log表中没有任何内容,{{1我的Bugsnag集成没有抓住任何东西。

当它从命令行运行正常时,我猜它不是Python问题,而是与从PHP调用它有关。

服务器有60Gb的RAM,并通过htop观察进程,它永远不会超过3%的RAM使用率。可能有其他硬编码RAM限制吗?

我正在使用Laravel 5.4,Ubuntu服务器,Python 2.7.12。

1 个答案:

答案 0 :(得分:0)

这是因为脚本有执行时间和内存限制,你可以在php.ini中查看。通常是max_execute_time = 30s。和内存限制默认为128M

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 300

和内存限制

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1280M