2009-03-13 5 views
6

Ich bekomme eine seltsame 5 bis 7 Sekunden Pause beim Ausführen von PHP-Skripten aus dem Kommandozeilen-PHP-Client (PHP 5.2 unter Windows).Seltsame 5 Sekunden Pause mit PHP Befehlszeilenschnittstelle (verwandt mit mysql/mysqli Erweiterung)

Während dieser Pause scheint das PHP-Skript für eine Weile "einzufrieren", bevor es zur Eingabeaufforderung zurückkehrt. Es verbraucht keine nennenswerte CPU-Zeit, es ist so, als würde es auf eine gewisse Verzögerung warten.

Nach dem Experimentieren mit PHP.ini habe ich dies auf die Tatsache beschränkt, dass die Erweiterung mysql oder mysqli aktiviert ist. Wenn diese Erweiterungen beide deaktiviert sind, keine lästige Pause und das PHP-Skript in nur Millisekunden endet.

Der Befehl Ich verwende ist:

"C:\Program Files\PHP\php.exe" -f %1 

Wo% 1 der PHP-Skript ist.

Die Pause noch tritt auf, selbst wenn der PHP-Skript ausgeführt wird, im Wesentlichen leer ist:

<?php 

?> 

Wissen Sie, was diese Pause verursacht und wie kann ich es entfernen, während noch mysql oder mysqli Unterstützung für PHP ermöglicht auf die Befehlszeile?

+0

Problem scheint in aktuellen PHP 5.3 unter Windows behoben. – thomasrutter

+0

Vielen Dank für diesen Thread, löste es mein Problem, das mich für viele Wochen nervte! Dieses Problem trat auf einem Win2008-Server mit IIS und PHP auf. Das Glück ist, dass wir sowieso keine mysql benötigen, also haben wir diese Erweiterung deaktiviert. Mit freundlichen Grüßen, Jens –

+0

Verwenden Sie MySQL-Datenbankfunktionen in Ihrem Code? Benutzt du irgendwelche dauerhaften Verbindungen? Wenn Sie diese ausschalten, geht es weg? –

Antwort

6

ist es ein bug in mysql. Sie können es lösen, indem Sie die neueste libmysql.dll (5.1.31 oder höher. Einige ältere Versionen funktionieren auch - siehe zweiten Link). Stellen Sie sicher, dass die libmysql.dll tatsächlich verwendet wird und es keine anderen libmysql.dlls in Ihrem Pfad gibt. Einzelheiten finden Sie in den zugehörigen Artikeln php issue.

+0

Vielen Dank. Das Aktualisieren von libmysql.dll in meinem PHP-Verzeichnis hat die Verzögerung fast vollständig beseitigt.Interessanterweise gibt es immer noch eine gewisse Verzögerung (einige hundert Millisekunden) im Vergleich zur Deaktivierung der MySQL-Unterstützung. Aber der Belästigungsfaktor ist gelöst. – thomasrutter

3

Ich habe auch eine ärgerliche Verzögerung von 2 Sekunden mit PHP von der Kommandozeile unter Windows 7 64bit erlebt.

Diese Version hatte eine Verzögerung:
php.exe (v5.3.5) ausgeliefert mit ZendServer Community Edition

Diese Version wunderbar schnell war:
php.exe (v5.3.6) mit ausgeliefert EasyPHP

(Leider ein altes Thread zu stoßen, aber hoffentlich hilft anderen dieses Problem googeln.)

4

Für mich (Zend Server CE unter Mac OS X) war die IMAP-Erweiterung der Übeltäter. Durch Deaktivieren wurde das Problem behoben.

Anoyone möchte ein Skript zur PHP-Erweiterung schreiben? :)

+1

Danke! Dies wurde mit MAMP auf Mac OS X Mavericks behoben, indem ich einfach die Erweiterung deaktivierte und die Zeile "extension = imap.so" in der php-cli Konfigurationsdatei löschte: /Applications/MAMP/bin/php/php5.5.10 /conf/php.ini – jmserra

+0

Das gleiche hier! Lustig, wie das ein Problem zwei Jahre später ist, aber deaktivieren imap.so löste die CLI-Verzögerung für mich auch. (MAMP PRO 3.0/OSX Yosemite) –