fsockopen()を使用して、Seleniumサーバーが実行されているかどうかを確認しようとしています。サーバーが稼働しているときは、定数を設定する必要があります。そうでない場合、定数は設定されません。これは、次のコードを使用して行われます。
if(!defined('TEST_SELENIUM')){
$fp = @fsockopen('localhost', 4444);
if ($fp !== false) {
define('TEST_SELENIUM', true);
fclose($fp);
}
}
この問題は、サーバーが実行されていないときに発生します(Windows 7の場合)。fsockopen()が閉じたポートを見つけてfalseを返すのではなく、ポートとの通信を試みる際に停止します。サーバーが実行されているときは、netstatを使用してすぐに表示されます。サーバーがオフの場合、netstatはポート4444から何も返しません。fsockopen()の私の理解から、これはすぐにfalseを返すはずです。しかし、繰り返しになりますが、ポートとの通信を試みる際に停止します。ここにタイムアウトを追加したくありません。これは、アプリケーション内で何らかのストールが発生する必要があるという点ではないためです。また、これはLinuxで期待したとおりに機能するように見えることに注意してください。ただし、ここWindows 7では失敗しています。私が間違っていることを誰かに教えてもらえますか?どうもありがとうございました!