PHPスクリプトを使用してBeanstalkdサーバーに接続し、既存のキューからジョブを予約しようとしています。 が、私は仕事が利用可能でない限り、ハングアップするスクリプトを期待して、デーモンからの応答を取得するためのfgets()関数を使用しています、ここではサンプルコードです:PHP fgets()(またはfread())がブロックされない
set_time_limit(0);
$connection = fsockopen('localhost', 11300);
fwrite($connection, "reserve\r\n");
stream_set_blocking($connection, TRUE);
fgets($connection);
あなたは、私が強制しようとしている見ることができるようにfgets()関数がブロックされていて、max_execution_timeを0に設定しています(制限なし)。しばらくして(2mins)スクリプトはエラーなしで戻ります。 私はtelnetで予約コマンドを実行しようとしましたが、exepctedとしてハングします。 私もfread()を使用しようとしましたが、同じ動作が発生します。
解決方法についてのご意見はありますか?
ええ、それは解決策になりますが、私はスクリプトを死ぬことなく待つ正しい時間を推測することなく、それを行う完全なノンブロッキング方法があるかどうかを知りたいと思います。 これは何らかのバグかどうか疑問に思っています。 –