php socket服務端能不能在網頁端開啟?而不是只能用CLI模式開啟

來源:互聯網
上載者:User
最近在做基於php socket的聊天程式,但是遇到了個問題:
開啟ws連接埠只能在CMD下用php server.php的方式來開啟連接埠,並不能關閉該CMD命令列視窗,一旦關閉就斷開了socket串連。
請問,能不能做到不用這樣的方式來開啟ws服務端,而成為在網頁端來開啟?怎麼做?


回複討論(解決方案)

可以從網站上開啟,但需要注意以下問題:
1、因為連接埠不能重複開啟,所以你必須保證 server.php 只會被運行一次
2、web 方式下的 php 是逾時設定有效,當然你需要設定成永不逾時
3、網頁伺服器是有逾時限制的,雖然時間比較長。應用程式長時間無資料輸出,將會被掛起或中斷
4、如果 server.php 間歇的做標準輸出的話,可以解決 3 的問題。但會引發下一個問題
5、php 在向標準輸出寫的時候,會檢查到請求源的串連是否暢通。如果請求源被關閉了,就會終止程式的運行
當然也提供有阻止這一預設行為的方法

其實命令視窗的存在並不是什麼壞事,至少他可以表示 ws 伺服器正在工作
另外 ws 伺服器在運行時,你應該要把重要的日誌資訊列印在視窗中,以便即時監視運行情況

可以從網站上開啟,但需要注意以下問題:
1、因為連接埠不能重複開啟,所以你必須保證 server.php 只會被運行一次
2、web 方式下的 php 是逾時設定有效,當然你需要設定成永不逾時
3、網頁伺服器是有逾時限制的,雖然時間比較長。應用程式長時間無資料輸出,將會被掛起或中斷
4、如果 server.php 間歇的做標準輸出的話,可以解決 3 的問題。但會引發下一個問題
5、php 在向標準輸出寫的時候,會檢查到請求源的串連是否暢通。如果請求源被關閉了,就會終止程式的運行
當然也提供有阻止這一預設行為的方法

其實命令視窗的存在並不是什麼壞事,至少他可以表示 ws 伺服器正在工作
另外 ws 伺服器在運行時,你應該要把重要的日誌資訊列印在視窗中,以便即時監視運行情況



非常感謝分析並回答!
因為在win下,CMD視窗一直在運行,並且不能關閉,一旦關閉將會停止運行socket服務,而這個視窗在案頭上顯示人總會有種想關閉的衝動,或者一不小心就會關閉。所以才想出這樣的狠招!
根據你的方法,設定了逾時限制後,在網頁端直接開啟ws服務,在xampp的netstat中查看,建立的進程中,多出了個12345連接埠(設定的ws連接埠),而後面顯示的name為httpd.exe,說明是由httpd.exe建立的,而前面php server.php在命令列下面建立的進程,則是由php.exe建立的,不知道這樣有沒有什麼弊端?

沒有什麼弊端,尤其是在調試環境中
如果是正式的服務,那麼在伺服器案頭上多一個命令視窗有什麼關係?誰也不會在伺服器上做日常工作的

好的,再次感謝

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.