[英]Why does a long running Python script called from PHP fail
我有一个Python脚本,可以转换PDF文件。 它在我的Laravel应用程序中通过PHP调用:
$command = escapeshellcmd("python /home/forge/default/pdf.py " . $id);
$output = shell_exec($command);
这适用于任何高达250MB的PDF, 但失败的是更大的PDF,例如500Mb。
如果我直接从命令行调用Python脚本,它可以正常工作并在大约5分钟内完成。 只有当shell_exec
调用它才会失败。
这是在Laravel排队的工作中发生的,所以据我所知,不是使用HTTP / PHP FPM,而是命令行,它应该没有超时?
Laravel队列工作程序正在运行,超时设置为0(无超时)。
PHP CLI设置中还有什么可能导致此操作失败吗? 有什么知道错误会记录在哪里 - 在failed_jobs
表中没有任何内容, laravel.log
没有任何内容,我的Bugsnag集成没有任何内容。
因为它从命令行运行正常,我猜它不是Python问题,而是与从PHP调用它有关。
服务器有60Gb的RAM,并通过htop
观察进程,它永远不会超过3%的RAM使用率。 可能有其他硬编码RAM限制吗?
我正在使用Laravel 5.4,Ubuntu服务器,Python 2.7.12。
这是因为脚本有执行时间和内存限制,你可以在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.