我有一个转换 PDF 文件的 Python 脚本。在我的 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。