2009-06-24 8 views
0

Ich habe ein PHP-Skript erstellt, das über die Befehlszeile ausgeführt wird. Es öffnet eine Verbindung zu einem pop3-E-Mail-Konto und lädt alle E-Mails herunter, schreibt sie in eine Datenbank und löscht sie nach dem Herunterladen. Ich habe dieses Skript von der Befehlszeile aus mit einer Fledermausdatei aufgerufen. Ich habe wiederum eine geplante Aufgabe erstellt, die alle 5 Minuten die Fledermausdatei aufruft. Die Sache ist, dass ich die Zeit auf Null für die Tatsache eingestellt habe, dass es manchmal E-Mails mit großen Anhängen geben könnte und das Skript die Anhänge tatsächlich herunterlädt und sie als Raw-Dateien offline speichert und kein Timeout ist, so dass das Skript nicht stirbt während des Downloads aus.PHP-Skript läuft als geplante Aufgabe hängt - Hilfe!

Ich habe festgestellt, dass das Programm manchmal hängt und es ein bisschen nervig ist - es hängt immer einen Punkt, d. H. Beim Aushandeln der Verbindung und der Verbindung mit dem Mail-Server. Und weil das Timeout auf Null gesetzt ist, scheint es in dieser Position hängen zu bleiben. Und deswegen wird die Aufgabe nicht so ausgeführt, wie es technisch aufgelegt ist.

Ich möchte, dass das Programm nicht Timeout beim Herunterladen von E-Mails - aber an den Punkten, wo es eine Verbindung aushandelt oder versuchen, eine Verbindung mit dem Mailserver sollte es ein Timeout nur an diesem Punkt selbst sein und nicht den Rest des Programms Ausführung.

Wie kann ich das tun :(

+0

Wie verbinden Sie sich mit dem pop3 E-Mail-Konto? –

+0

Ich benutze Code-Funktionen aus dem Roundcube.net Webmail-Projekt - es ist im Grunde eine Änderung des Codes. Es ist ziemlich einfach zu bedienen - alle Funktionen sind gut dokumentiert - müssen nur etwas von dem Code wiederholen, so dass es von der Befehlszeile ausgeführt werden kann. – Ali

Antwort

0

Der Timeout-Wert festgelegt socket_set_timeout() verwenden werden können, wenn Sie Steckdosen direkt verwenden. Sie können bei this other question Details anschauen. Wenn Sie eine Bibliothek verwenden, Sie Ich würde lieber überprüfen, ob es wirklich ist das Timeout-Problem. Log php errors into a file und Sie können sie alle durchsuchen. Setzen Sie die max_execution_time auf einen akzeptablen Wert (wie 10 Minuten) und überprüfen Sie die Protokolle, wenn es wieder hängt, wenn es ist immer die gleiche Zeile, in der es versagt

0

Ich stieß vor kurzem auf dieses Problem für diejenigen, die sind auf der Suche nach einer Antwort. Ich hatte Aufgabenplaner, der die .php Datei direkt aufruft. Es würde hängen bleiben und niemals etwas zurückgeben.

Ich fand, dass das Ausführen von firefox.exe und das Senden der URL als Parameter die richtige Möglichkeit war, eine .php-Datei über Task-Manager auszuführen.

firefox.exe "http: //host/dir/file.php"

Verwandte Themen