2016-06-06 11 views
0

Ich benutze eine Redis Queue mit meiner Laravel App. Es scheint nicht, dass der Aufruf von exec('{run some java program}') aus meinem Job in der Warteschlange tatsächlich diesen Befehl ausführt.Laravel exec() in der Warteschlange Job

Wer weiß etwas darüber?

Antwort

1

Wenn aus irgendeinem Grund ein Fehler mit Ihrer externen ausführbaren Datei auftritt, wird PHP übersprungen und ignoriert die Ausgabe von exec (Sie könnten das Ergebnis von exec() in einer Datei/Konsole debuggen/ablegen, um mehr zu erfahren) und deshalb wird auch die Schlange.

Praktisch zu erinnern, das PHP-CLI, in dem Queues ausgeführt werden, hat keinen Zugriff auf alles, was Sie sonst in einer Nicht-CLI-Umgebung (PHP-FPM, Apache-Modul usw.) verwenden würden (Anfrage, Anfrage)() und Anfrage $ wird nicht funktionieren, wie Sie sie erwarten)

Verwandte:

Laravel Queued Job doesn't wait for exec to coplete

+0

Dank @JustinOBB! Wegen der Vorbehalte, Vorschläge für Alternativen? –

+0

Versuchen Sie diese: 1) Ergreifen Sie die Ausgabe eines synchronen Laufs von der Befehlszeile: 'php -r" echo exec ('java javaprogram'); "2) Versuchen Sie Shell_exec() anstelle von exec() http: // php .net/manual/de/function.shell-exec.php 3) Dump Ausgabe von Ihrem Java-Programm, um zu sehen, ob es lief und hat die erwartete Ausgabe. –