2010-01-27 46 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');

相關問題