它应该测试特定端口是否在 localhost 上打开,如果没有,请重新启动。
它在 Windows 中运行。
这应该可以做到,在 Windows 7 上测试并正常工作。应该适用于所有 NT 口味:
function testPort($port, $timeout = 5) {
if(!fsockopen('127.0.0.1', $port, $errno, $errstr, $timeout)) {
exec("shutdown.exe /r");
}
}
testPort(8080);
您可以编写一个 PHP 扩展来做到这一点。扩展应该使用 Windows API 来重启机器,因为套接字检查部分可以直接在 PHP 中完成。这是一个关于如何编写扩展的问题。
InitiateSystemShutdown是 Win32 API 函数,您可以调用它来执行实际的重新启动。
使用您需要使用特定端口打开到本地主机的 TCP 连接(套接字)的套接字。如果连接建立,则表示端口打开,否则(如果超时或拒绝),则端口关闭。
这仅适用于 TCP 端口
对于“重启”部分,使用exec
('shutdown -r');