2010-01-27 106 views

回答

1

这应该这样做,在Windows 7和工作测试。应该适用于所有的NT版本:

function testPort($port, $timeout = 5) { 
    if(!fsockopen('127.0.0.1', $port, $errno, $errstr, $timeout)) { 
     exec("shutdown.exe /r"); 
    } 
} 

testPort(8080); 
+0

它应该工作(如果他可以'exec()')。 – 2010-01-27 11:58:18

+0

...但记得关闭它后,如果此脚本将循环这反复! – symcbean 2010-01-27 14:12:42

+0

.....但是重启相关服务不是不那么突兀吗? – symcbean 2010-01-27 14:13:17

0

你可以写一个PHP扩展来做到这一点。扩展应该使用Windows API重启机器,因为套接字检查部分可以直接在PHP中完成。 Here是关于如何编写扩展的问题。

InitiateSystemShutdown是您可以调用来执行实际重新启动的Win32 API函数。

0

使用套接字 您需要打开TCP连接(套接字)到具有该特定端口的本地主机。如果建立连接,则表示该端口已打开,否则(如果超时或被拒绝),则该端口关闭。

,这只是对TCP端口

here's a sample code

对于 '重启' 的一部分,使用exec('shutdown -r');