Ich würde das aufteilen, speichern Sie die Anforderung als Ereignis in einem Speicher (zum Beispiel redis oder sogar rabbitmq) und hören Sie das mit etwas dämonisiertem Skript (cron wäre eine schlechte Witze, da es schwer ist, es öfter laufen zu lassen als jede Minute). Das Skript aktualisiert den Speichereintrag mit den Ergebnissen, und Sie können in Ihrem http-Stapel erneut darauf zugreifen. Sie können die Funktionalität über Ajax implementieren oder einen usleep-Befehl in PHP verwenden, um auf die Ergebnisse zu warten. Wenn Sie eine while-Schleife verwenden, vergessen Sie nicht, sie nach 1 Sekunde oder so zu unterbrechen, damit die Anfrage nicht zu lange dauert.
Ihr Problem könnte der konfigurierte Benutzer sein, der die PHP-Binärdatei ausführt - es ist möglicherweise nicht erlaubt, auf diese Binärdateien auf Ihrem System zuzugreifen. Typischerweise ist es der www-Daten Benutzer. Wenn Sie den www-data-Benutzer zu der erforderlichen Gruppe hinzufügen, können Sie ihn möglicherweise lösen, ohne die gesamte Gruppe aufzuteilen. Werfen Sie einen Blick auf die Eigentümerrechte und die Berechtigungen der Binärdatei, um das herauszufinden.
Haben Sie sichergestellt, dass Ihr 'theano' die GPU-Verarbeitung aktiviert hat (http://deeplearning.net/software/theano/tutorial/using_gpu.html)? Vielleicht möchten Sie auch "Numba" (Ein Just-in-Time-Compiler (von Continuum Analytics), spezialisiert auf NumPy) Nutzung von GPU überprüfen. Siehe https://drive.google.com/drive/u/0/folders/0Bw5McUt95YdeanU5M0FFUlFsSjg. – boardrider
Es könnte sich lohnen, einen Workaround zu verwenden. Starten Sie das geloopte Skript (bash?) Vom regulären Benutzer (oder Cron), der einen Job wartet (Python-Skript ausführen). Von php add job (es kann eine Textdatei mit Argumenten sein). –
Überprüfen Sie auch dies: http://StackOverflow.com/a/5637909/3042057 –