要學習socket多程序,先來看看什麼是單程序。
服務端server.php**如下:
<?php
$socket = socket_create(af_inet,sock_stream,sol_tcp);
socket_bind($socket,'10.211.55.13',9090) or
die('error');
socket_listen($socket,5);
while(true)else
socket_close($client);
}socket_close($socket);
**解釋,上面**中我們做了乙個判斷,如果請求的位址中有sleep
關鍵字,就『休克』10秒,來模擬單程序處理繁忙的狀態。
我們可以想象:當我們直接在瀏覽器中請求,會馬上給我們返回
this is server
內容,而當我們請求?sleep
,瀏覽器則會等待10秒,才返回this is server,休克了10秒,模擬很繁忙的樣子
。
從上面**可以看出:乙個請求」卡住了」,另外乙個請求也進入」等等狀態」,這就是單程序的缺陷。
我們通過linux命令檢視也只有乙個程序在執行server.php
ps -ef |grep server.php
或者根據占用的9090埠檢視程序:
netstat -anp | grep 9090
php -m #檢視安裝的php擴充套件
關於php多程序的資料:
下面是我們改造後的服務端server.php的**:
從上面**可以看出:瀏覽器多個請求,並沒有發生」卡住了」的現象。
使用命令檢視程序數,果然不是只有乙個了。
socket 多程序通訊
之前寫的那個socket太次了。只能連乙個,所以優化了一下。我管他叫superserver。獻上 include include include include include include include intmain int argc,const char ar int fd socket ...
多程序socket程式設計示例
socket程式設計的基礎函式使用請自查詢,本文只給出在linux gcc可編譯執行的socket通訊的伺服器程式與客戶端程式。如下 server端 include include include include include signal include socket include socka...
PHP多程序協作程式設計之 socket
基本思路 通過socket請求其他php腳步,實現php的多程序的非同步執行。廢話就不多說了,請看下面的腳步並執行之。a.php function runthread function a function b if isset get act get act a if get act a else...