繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM