我有一個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