2017-02-07 7 views
1

Ok, nehmen wir an, meine Website ermöglicht es Benutzern, große Stapel von Dateien zur Verarbeitung hochzuladen.Wie führe ich sehr lange Aufgabe im Hintergrund PHP?

Jetzt, sobald sie die Dateien hochladen sagen, eine process_files() -Funktion aufgerufen wird. Dies dauert sehr lange und macht die Website für den Benutzer grundsätzlich unbrauchbar, bis die Aufgabe entweder abgelaufen oder abgeschlossen ist.

Ich frage mich, ob es einfach ist, dies einfach parallel oder im Hintergrund auszuführen, damit der Benutzer die Website noch benutzen kann?

Wenn es in meinem Fall ein Unterschied macht, werden diese sehr selten aufgerufen werden.

Antwort

4

können Sie Aufgabe in zwei Teile unterteilen:

ersten Teil (web) speichert nur eine Datei auf einem Datenträger. Auf diese Weise wird der Webpart schnell funktionieren.

Sekunde (System) verarbeitet alle Dateien, die vom ersten Teil gespeichert wurden. und Sie können es regelmäßig starten, zB als Cron-Task unter Linux, oder Sie verwenden einen anderen Task-Scheduler, abhängig von Ihrem System.

0

Ich würde vorschlagen, dass nach dem Hochladen von Dateien, die Sie über die CLI ein Skript aufrufen, die im Hintergrund ausgeführt wird und nicht blockierende sein:

exec("php the_long_file_processing_script.php > /dev/null &"); 
Verwandte Themen