Heim > Artikel > Backend-Entwicklung > Bei der Stapelverarbeitung von Bildern in PHP kommt es zu einer Zeitüberschreitung bei der Programmausführung
Der Grund für diese Stapelverarbeitung ist, dass das Projekt selbst viele Male ausgelagert wurde und die Bilder überall gespeichert sind und Miniaturansichten und Bilder in einheitlicher Größe nicht speziell generiert werden. Diesmal werden die Bilder aus dem Original gemischt extrahiert Bild- und Textdaten, speichern Sie sie im angegebenen Verzeichnis, schneiden Sie die Größe zu, generieren Sie das entsprechende Miniaturbild und speichern Sie das Ergebnis in der Datenbank.
Bei der Batch-Programmverarbeitung ist es unvermeidlich, dass die Programmausführungszeit zu lang ist, was zu 504-Fehlern usw. führt. Das Anpassen der Serverkonfiguration ist schließlich keine gute Lösung , es wirkt sich auf die Produktionsumgebung aus...
Aber ich bin faul und möchte keine Paging-Anforderungsverarbeitung für die einmal extrahierten Bilder durchführen^_^
Übrigens am meisten Die Anzahl der auf einmal verarbeiteten Daten beträgt 3000~
Kommen wir zum Punkt. Unser Hauptzweck besteht darin, die Programmausführungszeit so weit wie möglich zu verlängern, damit alle Bilder erfasst werden, die erfasst werden sollen Die Verarbeitung wird abgeschlossen und in die Datenbank geschrieben.
Unsere Umgebung basiert auf Nginx. Zunächst sollten wir auf den Code achten, der die Anpassung von php.ini vermeidet Grundlegende Dinge wie maximaler Speicher usw. müssen noch angepasst werden, und ich werde sie hier nicht vorstellen. Sie müssen Curls CURLOPT_TIMEOUT festlegen (ich verwende CURL, um Remote-Bilder zu erfassen). , es muss ein Problem vorliegen, wenn sie nach einer Zeitüberschreitung nicht erfasst werden können. Geben Sie einfach auf. Wenn Sie diese Zeitüberschreitung nicht festlegen, wird Ihnen die Laufzeit weiterhin Fehler melden.
Der nächste Schritt ist der Server. Der erste ist die Ausführungszeit des Nginx-Programms:
fastcgi_connect_timeout 900s;
fastcgi_send_timeout 900s;
fastcgi_read_timeout 900s;
Diese Konfiguration befindet sich in nginx.conf. Wenn Sie den Wert ändern, hängen Sie ihn nicht entsprechend Ihrer eigenen Situation an und starten Sie den Dienst nach der Anpassung neu.
MYSQL meldet auch einen Timeout-Fehler. Ändern Sie my.ini, um die Konfiguration hinzuzufügen oder zu ändern:
wait_timeout=2880000
interactive_timeout=2880000
max_allowed_packet =100M
Starten Sie MySQL neu, damit es wirksam wird. Nach den oben genannten Einstellungen wurden verschiedene Situationen von Timeout-Fehlern grundsätzlich eliminiert, wobei insgesamt 86G erfasst und generiert wurden Bilder.
Ich möchte noch einmal betonen, dass dieser Vorgang nicht sehr zu empfehlen ist, insbesondere in einer Produktionsumgebung, da er viele Probleme verursachen wird. Das Wichtigste ist, die oben genannten Einstellungen nach Abschluss der Batch-Aufgabe wiederherzustellen~
Verwandte Empfehlungen:
Zusammenfassung der Probleme im Zusammenhang mit der Bildverarbeitung in WeChat-Miniprogrammen
(Fortgeschritten) Allgemeine PHP-Bildverarbeitungsklassen
Einführung in die Verwendung von phpThumb-Parametern im PHP-Bildverarbeitungskurs
Das obige ist der detaillierte Inhalt vonBei der Stapelverarbeitung von Bildern in PHP kommt es zu einer Zeitüberschreitung bei der Programmausführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!