0
我有一個腳本可以打開一個端口並允許多個連接(一個簡單的flash聊天框)之間的套接字通信。該腳本必須考慮運行時間和關閉端口的時間。我的問題是,如果腳本陷入無限循環(或者我無法控制它),我可以做些什麼來關閉端口?用PHP關閉套接字連接
爲了清楚起見,我在第二個PHP腳本之後強制關閉第一個腳本打開的端口(然後我可以在腳本中放入一些檢查代碼,以便在套接字關閉時停止執行)。
我有一個腳本可以打開一個端口並允許多個連接(一個簡單的flash聊天框)之間的套接字通信。該腳本必須考慮運行時間和關閉端口的時間。我的問題是,如果腳本陷入無限循環(或者我無法控制它),我可以做些什麼來關閉端口?用PHP關閉套接字連接
爲了清楚起見,我在第二個PHP腳本之後強制關閉第一個腳本打開的端口(然後我可以在腳本中放入一些檢查代碼,以便在套接字關閉時停止執行)。
我不知道有辦法做到這一點。一個套接字存在於它創建的實例中。如果您創建套接字並在腳本「foo.php」中運行while(1)
循環,據我所知,無法單獨執行另一個腳本,比如說「bar.php」來訪問在foo.php中創建的套接字並關閉它。通常,客戶端 - 服務器應用程序依靠線程來實現套接字池和監視。
你的問題有點含糊。通常情況下,套接字是打開的,直到它們被程序關閉或程序崩潰/退出。通常你有某種通信協議,說:「嘿,這是我們談話的結束,現在請關閉你的插座。」此外,如果您的程序容易遇到無限循環,則您需要重新考慮您的設計或採用某種可避免無限循環的檢查系統。 – kevin628 2012-07-27 18:31:41
您是否嘗試這樣做?因爲當您嘗試重新運行腳本時,即使腳本已終止,您也會看到端口已被使用的錯誤? – drew010 2012-07-27 18:59:50
@ kevin628我有一個聊天框,我使用PHP作爲服務器。該腳本打開端口,並在while(1):'循環內偵聽並管理連接。在一個小時內關閉連接後,在循環中有一個檢查。雖然這有效,但我想要一種方法來強制關閉來自單獨腳本的連接。 – 2012-07-30 08:32:50