Unerwartete Verbindung Zurücksetzen: Eine PHP-oder Apache-Problem?
Ich habe ein PHP-Skript, das hält halt an der gleichen Stelle jedes mal, und mein browser meldet:
Die Verbindung zum server wurde zurückgesetzt
während die Seite am laden war.
Habe ich getestet auf Firefox und IE, passiert dasselbe. Also, ich vermute, dass dies ist ein Apache/PHP config problem. Hier sind einige Dinge, die ich eingestellt habe.
PHP.ini
max_execution_time = 300000
max_input_time = 300000
memory_limit = 256M
Apache (httpd.conf)
Timeout 300000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 0
Sind die oben korrekt? Was kann die Ursache sein und was kann ich einstellen?
Ich arbeite mit PHP (5.2.12.12) als
Modul auf dem Apache (2.2) auf einem Windows
Server 2003.
Ist es sehr wahrscheinlich, dass dies ein Apache-oder PHP-Problem, da alle Browser das gleiche tun. Ich denke, das Skript läuft für genau 10 Minuten (600 Sekunden).
- Was soll das script machen, wenn es aufhört?
- Ich denke, an dem Punkt es hört auf, seine ausführen einer SQL-Skript mithilfe von SQLCMD-Dienstprogramm. Dieses Skript ist über 500 Zeilen und das ist alles, es tut. Jede einzelne Zeile ist ein Aufruf zum ausführen von SQL-Skript mithilfe von SQLCMD und ich Frage mich, warum es ausfällt, da es dies getan hat über 300 hundert mal. Nichts in den logs btw auch!!!! 🙁
- "Nichts in den logs btw auch!" - enthält die Protokolle des Webservers, der php-und sqlserver?
- Ja, alle von Ihnen. Das lustige an der Sache ist, in der "access.log" von Apache. Alles ist aufgezeichnet, außer dem Skript, hält das timing. Wann wird Apache notieren Sie sich dieses, nach Fertigstellung von Skript-oder schon vorher?
- Und wie führen Sie das Dienstprogramm sqlcmd? Verwenden Sie einen parameter wie
-Q
zu versichern sqlcmd wird beendet, wenn es fertig ist? Ist es erforderlich, dass sqlcmd -? Es gibt php-Module, die die Kommunikation mit einem SQL-server "in" php. - Keine Sorge, ich weiß, dass es nicht eine gute Idee, verwenden von SQLCMD - werden bald die Umstellung auf die PHP-Treiber von MS. ich ausführen von SQLCMD mit exec , hier ein Beispiel: sqlcmd -E -S TYHSY-01 -d newtest201 -ich "E:\PHP_N\M_Create_Log_SP.sql"
- Und verwenden Sie passthru() oder die
-o xyz.log
option, um Nachrichten abfangen von sqlcmd -? - Ich nur mit exec() zum ausführen dieser Befehle und ich log die Ausgabe in eine Textdatei. Die log-Datei zeigt alle Ausführung waren erfolgreich und ich habe verdoppelt aktiviert in SQL Server und bestätigen die änderungen.
- Haben Sie überprüft Ihre php-error-log (den
error_log
imphp.ini
)? Apache-logs nach der Anforderung abgeschlossen, da braucht es zum protokollieren der HTTP-status-code und die Länge des Inhalts.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches Problem - stellt sich heraus, apache2 wurde segfaulting. Ursache für den segmentation Fault wurde php5-xdebug für 5.3.2-1ubuntu4.14 auf Ubuntu 10.04 LTS. Entfernen von xdebug das problem behoben.
Hatte ich auch dieses problem heute, es stellte sich heraus, dass eine streunende
break;
- Anweisung im PHP-code (außerhalb der Schalter oder irgendein loop), in eine Funktion mit einemtry...catch...finally
block.Sieht aus wie PHP stürzt in dieser situation:
Diese wurde mit PHP version 5.5.5.
Unterschiede zwischen 2 PHP-configs waren in der Tat die Ursache für das Problem auf meinem Ende. Meine app basiert auf der NuSOAP-Bibliothek.
Auf config 1 mit PHP 5.2, es war alles in Ordnung, wie der PHP-SOAP-Erweiterung war aus.
Auf config 2 mit PHP 5.3, es gab "Connection Reset" - Fehler, da der PHP-SOAP-extension auf.
Wechsel der Endung aus, darf ich meine app läuft auf PHP 5.3, ohne alles umschreiben.
Hatte ich ein Problem, wo in einigen Fällen PHP 5.4 + eAccelerator = connection reset. Es gab keine Fehler Ausgabe in eine log-Dateien, und es passiert nur auf bestimmte URLs, die es schwer zu diagnostizieren. Stellt sich heraus, es passiert nur bei bestimmten PHP-code /bestimmte PHP-Dateien, und war aufgrund einiger Inkompatibilitäten mit bestimmten PHP-code und eAccelerator. Einfachste Lösung war das deaktivieren von eAccelerator für diese bestimmte Website, indem Sie die folgenden .htaccess-Datei
php_flag eaccelerator.aktivieren 0
php_flag eaccelerator.optimizer 0
(oder gleichwertig Zeilen in php.ini):
eaccelerator.enable="0"
eaccelerator.optimizer="0"
Es ist ein Alter post, ich weiß, aber da konnte ich nicht finden die Lösung für mein problem irgendwo und ich habe es behoben, werde ich meine Erfahrungen.
Die wichtigste Ursache für mein problem war ein file_exists() Aufruf der Funktion.
Die Datei existiert tatsächlich, aber aus irgendeinem Grund einen zusätzlichen Schrägstrich auf den Speicherort der Datei ( "//" ), die normalerweise arbeitet auf einem normalen browser, scheint nicht zu funktionieren in PHP. Vielleicht ein problem in Bezug auf etwas ähnliches. Hoffe, das jemand hilft!
Ich würde versuchen, die Einstellung alle Fehler reporting-Optionen
und senden die Ausgabe an den client
-l 3
- Verbindung timeout-option (obwohl ich bezweifle, dass die Ursache)Mein PHP wurde segfaulting ohne zusätzliche Informationen, wie die Ursache der es so gut. Es stellte sich heraus, zwei Klassen, indem Sie jedes andere Magische __call () - Methode weil Sie nicht über die Methode aufgerufen wird. PHP nur Schleifen, bis es aus dem Speicher. Aber es hat den Bericht nicht das übliche "Allowed memory size of * bytes exhausted" - Meldung, wahrscheinlich, weil die Methoden sind "Magie".