Ich habe ein Python-Skript, das eine PDF-Datei konvertiert. Es wird über PHP in meinem Laravel App namens:Warum schlägt ein lang laufendes Python-Skript aus PHP fehl
$command = escapeshellcmd("python /home/forge/default/pdf.py " . $id);
$output = shell_exec($command);
Dies mit jedem PDF bis zu 250MB funktioniert gut, aber nicht mit einem größeren PDF, zum Beispiel 500 MB.
Wenn ich das Python-Skript direkt von der Befehlszeile aus aufrufen, funktioniert es gut und ist in ca. 5 Minuten abgeschlossen. Nur wenn es von shell_exec
aufgerufen wird, schlägt es fehl.
Dies passiert in einem Laravel-Job in der Warteschlange, so weit ich weiß, verwendet nicht HTTP/PHP FPM, aber die Befehlszeile, die keine Zeitüberschreitung haben sollte?
Der Laravel-Warteschlangen-Worker wird mit dem Zeitlimit 0 (kein Zeitlimit) ausgeführt.
Gibt es noch etwas in den PHP CLI-Einstellungen, das dazu führen könnte, dass dies fehlschlägt? Weiß irgendwas, wo Fehler aufgezeichnet werden - es gibt nichts in failed_jobs
Tabellen, nichts in laravel.log
, und nichts wird von meiner Bugsnag Integration gefangen.
Da es OK von der Befehlszeile ausgeführt wird, vermute ich, es ist kein Python-Problem, sondern etwas mit dem Aufruf von PHP zu tun.
Der Server verfügt über 60 GB RAM und überwacht den Prozess über htop
, es wird nie über 3% der RAM-Auslastung erhalten. Könnte es ein anderes fest codiertes RAM-Limit geben?
Ich benutze Laravel 5.4, Ubuntu-Server, Python 2.7.12.
Hmm. Ich hatte bereits den Speicher auf 25000 eingestellt. Ausführungszeit war 30 - aber ich habe viele Warteschlangenaufträge 3-5 Minuten ohne Problem? Ich habe gerade versucht, die Ausführungszeit auf 900 (15 Minuten) zu setzen und es scheiterte nach etwa 5 Minuten ... – samiles
Ich habe versucht, sowohl 'php-cli' als auch' php-fpm' .ini Dateien auf 'memory_limit = 50000M' und 'max_execution_time = 3600', aber das Skript stirbt immer noch bei ungefähr 5 Minuten: \ Es gibt keine Fehler, es verschwindet einfach von oben und der Rest des Warteschlangenauftrags wird nicht ausgeführt. – samiles