Ich versuche, über ein PHP-Skript eine Verbindung zu einem Beanstalkd-Server herzustellen und Aufträge aus einer bestehenden Warteschlange zu reservieren. Ich verwende die Funktion fgets(), um Antworten vom Deamon zu erhalten, und erwarte, dass das Skript hängen bleibt, wenn kein Auftrag verfügbar ist, hier ist ein Beispielcode:
set_time_limit(0);
$connection = fsockopen('localhost', 11300);
fwrite($connection, "reserve\r\n");
stream_set_blocking($connection, TRUE);
fgets($connection);
Wie Sie sehen können, versuche ich, die Funktion fgets() zum Blockieren zu zwingen, und ich setze die max_execution_time auf 0 (d.h. kein Limit), aber nach einer Weile (2 Minuten) kehrt das Skript ohne Fehler zurück. Ich habe versucht, den Reserve-Befehl über Telnet auszuführen, und er bleibt wie erwartet hängen. Ich habe auch versucht, fread() zu verwenden, aber ich erhalte das gleiche Verhalten.
Haben Sie einen Vorschlag, wie man das Problem lösen kann?