我正在尝试使用 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 上失败了。谁能告诉我我做错了什么?非常感谢!