『壹』 nginx和php-fpm 是使用 tcp socket 還是 unix socket
如果是在同一台伺服器上運行的nginx和php-fpm,並發量不超過1000,選擇unix socket,因為是本地,可以避免一些檢查操作(路由等),因此更快,更輕。
如果我面臨高並發業務,我會選擇使用更可靠的tcp socket,以負載均衡、內核優化等運維手段維持效率。
『貳』 php可不可以socket通信長連接,不斷開,然後實現多次通訊
理論上是可以的,使用PHP提供的socket相關API,主要問題是腳本執行時間。
PHP運行模式分為非命令行模式及命令行模式。
非命令行模式一般是用於B/S交互,max_execution_time默認為非零,也就是限制腳本執行時間。即使你設置max_execution_time為0也面臨用戶瀏覽器請求的超時問題。
命令行模式下set_limit_time默認為0,做為本地腳本執行,所以沒有上述的問題。
PHP SOCKET相關文檔:
http://cn2.php.net/manual/zh/book.sockets.php
『叄』 php涓轟粈涔堜笉閫傚悎socket
浣滀負涓鍚嶉潪搴曞眰紼嬪簭鍛橈紝瑕佹兂娣卞叆浜嗚Вsocket鐨勫唴閮ㄥ疄鐜版満鍒舵槸寰堝洶闅劇殑錛屾垜浠鍙闇鏄庣櫧socket鏄涓濂楁搷浣滅郴緇熷皝瑁呭ソ鐨勫疄鐜拌繘紼嬮氫俊鐨勫嚱鏁幫紝浼氬壋寤哄拰璋冪敤灝卞熶簡銆
PHP鐨勮璦鐗規у拰鑷韜瀹氫綅鍐沖畾浜嗗畠鍙閫傚悎鍋歴ocket瀹㈡埛絝錛岃屼笉閫傚悎鍋歴ocket鏈嶅姟鍣ㄧ銆
鍥犱負socket涓昏侀潰鍚戝簳灞傚拰緗戠粶鏈嶅姟寮鍙戱紝涓鑸鏈嶅姟鍣ㄧ閮芥槸鐢 C 鎴 Java 絳夎璦瀹炵幇錛岃繖鏍瘋兘鏇村ソ鍦版搷浣滃簳灞傦紝瀵圭綉緇滄湇鍔″紑鍙戜腑閬囧埌鐨勯棶棰橈紙濡傚苟鍙戙侀樆濉炵瓑錛変篃鏈夋垚鐔熷畬鍠勭殑瑙e喅鏂規堬紝鑰孭HP鏄劇劧涓嶉傚悎榪欑嶅簲鐢ㄥ満鏅銆 錛堟帹鑽愬︿範錛歅HP瑙嗛戞暀紼嬶級
瀹為檯涓婏紝PHP鎿嶄綔MySQL鏁版嵁搴撲篃鏄閫氳繃socket榪涜岀殑錛岃繖姝f槸鐢變簬socket灞忚斀浜嗗簳灞傜殑鍗忚錛屼嬌寰楃綉緇滄湇鍔′箣闂寸殑浜掕仈浜掗氬彉寰楃畝鍗曘
闄や簡浼犵粺鐨勬湇鍔″櫒絝璇璦瀹炵幇鐨剆ocket澶栵紝闅忕潃HTML5鐨勬祦琛岋紝嫻忚堝櫒瀹㈡埛絝瀹炵幇鐨刉ebSocket涔熼愭笎鍏磋搗錛屽逛簬榪欎竴鐐瑰煎緱鍏蟲敞錛孎lashSocket涔熸槸涓涓涓嶉敊鐨勮В鍐蟲柟妗堛
瑕佸湪瀹㈡埛絝鎿嶄綔socket錛屽彲浣跨敤fsockopen銆乻ocket_create 鎴 stream_socket_client 絳夊嚱鏁板疄鐜幫紝濡傛灉鏄疨HP5錛屾帹鑽愪嬌鐢╯tream_socket_client銆
socket浜や簰搴旂敤瀹炰緥錛氫嬌鐢╯ocket鎻愪氦琛ㄥ崟
鏂板緩涓涓 test.php 鏂囦歡錛屽悜 http://demo.com/index.php?id=1 鎻愪氦琛ㄥ崟鏁版嵁錛屼唬鐮佸備笅錛
<?php
$data = array('comment'=>'this is a robot comment');
$data = http_build_query($data);
$out = "POST http://demo.com/index.php?id=1 HTTP/1.1
"; // 閫氳繃POST鏂瑰紡鍙戦佹暟鎹
$out .= "Host: demo.com
";
$out .= "Content-type: application/x-www-form-urlencoded; charset=UTF-8
";
$out .= "Content-length: ".strlen($data)."
";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0"."
";
$out .= "Connection: close"."
"."
"; // 娉ㄦ剰錛氭ゅ勬湁涓や釜
$out .= $data."
"; // 姝f枃鏁版嵁
$fp = fsockopen("demo.com", 80, $errno, $errstr, 30); // 鍒涘緩socket瀹㈡埛絝榪炴帴
// $fp = stream_socket_client("tcp://demo.com:80", $errno, $errstr, 30); 鎺ㄨ崘榪欑嶅啓娉
fwrite($fp, $out); // 鍚戞湇鍔″櫒鍙戦佹暟鎹
while (!feof($fp)) {
echo fgets($fp, 1280); // 璇誨彇鏈嶅姟鍣ㄥ搷搴旂殑鏁版嵁
}
fclose($fp); // 鍏抽棴socket榪炴帴
?>闇瑕佹敞鎰忎互涓嬪嚑鐐癸細
fsockopen鐨勭涓涓鍙傛暟錛屼篃鍙浠ヤ嬌鐢↖P鍦板潃錛屼笉瑕佸甫 http:// 瀛楃︿覆錛岄櫎闈炰嬌鐢⊿SL絳
璇鋒眰澶達紙headers錛変笉涓瀹氳佸甫涓婃墍鏈夌殑澶村煙錛屼竴鑸鍙闇甯︿笂鍑犱釜鏍稿績鐨刪eader鍗沖彲
鍦ㄦ渶鍚庝竴涓猦eader澶勶紝鍗 Connection 鍚庢湁涓や釜鎹㈣
娉ㄦ剰緙栫爜闂棰