亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5907 | 回復(fù): 9
打印 上一主題 下一主題

[原創(chuàng)]PHP與外部服務(wù)器的持久連接 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-07-01 22:20 |只看該作者 |倒序瀏覽
博客地址: http://lajabs.net/?p=373

php做為腳本語言,有時也有特殊的需求對外連接到其它服務(wù)器發(fā)送消息,簡單的方法可以直接使用socket擴展,比如連接一個TCP服務(wù)器:

  1. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  2. if($socket)
  3. {
  4.   socket_connect($socket, '127.0.0.1', 8081);
  5.   $pack = 'hello.'; //發(fā)送的內(nèi)容
  6.   socket_send($socket, $pack, strlen($pack), 0);
  7.   socket_recv($socket, $buffer, 1024, 0);
  8.   echo $buffer; //接收的內(nèi)容
  9. }
復(fù)制代碼
這些socket功能已經(jīng)可以滿足大多數(shù)對外連接的需要了,但面對一些連接特別頻繁的環(huán)境就顯得有些力不從心,系統(tǒng)頻繁地建立和銷毀連接的開銷是很大的,這時需要一種持久連接,說到持久連接,很多人可能會馬上想到mysql_pconnect這類函數(shù)(有點談虎色變),由于PHP的運行機制造成持久連接一直有著這樣那樣的問題(不細(xì)談),其實對于目前高版本的PHP,啟用php-fpm運行在fast-cgi下
的持久連接使用還是比較理想的。

php很早就提供了一個這樣的函數(shù):pfsockopen,可能更多人對于fsockopen更了解,而使用上則大同小異。

簡單地用例子說明:

  1. $socket = pfsockopen('127.0.0.1',8081,$errno, $errstr);
  2. if($socket)
  3. {
  4.   $pack = 'hello.';
  5.   fwrite($socket, $pack);  //fput 、fget
  6.   $buffer = fread($socket, 1024);
  7.   echo $buffer;
  8. }
復(fù)制代碼
php建立了一個和目標(biāo)服務(wù)器8081端口連接,當(dāng)PHP腳本執(zhí)行完成后不會斷開連接,并在下一次腳本運行時重新使用這個連接,
使用php-fpm環(huán)境下會建立與其進程數(shù)相同的連接數(shù),這樣就類似形成一個“連接池”。

論壇徽章:
0
2 [報告]
發(fā)表于 2011-07-02 00:25 |只看該作者
關(guān)于socket你提到的寫法已經(jīng)out了。。。

參見 stream 相關(guān)的函數(shù),那才叫猛,而且不需要額外的擴展,可控性也很強,還能異步連接呢。

stream_socket_server(), stream_socket_client() ...

論壇徽章:
0
3 [報告]
發(fā)表于 2011-07-02 09:17 |只看該作者
關(guān)于socket你提到的寫法已經(jīng)out了。。。

參見 stream 相關(guān)的函數(shù),那才叫猛,而且不需要額外的擴展,可控 ...
hightman 發(fā)表于 2011-07-02 00:25



   
果然很猛,見識了

論壇徽章:
7
寅虎
日期:2014-08-15 12:54:11獅子座
日期:2014-10-28 23:42:142015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT運維版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-10-10 06:20:00
4 [報告]
發(fā)表于 2011-07-03 14:25 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
5 [報告]
發(fā)表于 2011-07-04 17:08 |只看該作者
web service的服務(wù)器端還是apache好,客戶端就由不得你了。js, curl. 啥都可以,誰叫他是客戶端呢?

論壇徽章:
7
寅虎
日期:2014-08-15 12:54:11獅子座
日期:2014-10-28 23:42:142015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT運維版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-10-10 06:20:00
6 [報告]
發(fā)表于 2011-07-05 20:13 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
7 [報告]
發(fā)表于 2011-07-05 21:01 |只看該作者
沒用過。  curl實現(xiàn)很方便,干嘛要stream?
另外 zend freamwork 里面有現(xiàn)成的 client, 比如  xmlrpc_client, rest_client
都封裝好了,干嘛還要去發(fā)明輪子?

論壇徽章:
0
8 [報告]
發(fā)表于 2011-07-05 22:07 |只看該作者
方便不方便不一定,看自己喜好和應(yīng)用情況,摘自手冊

  1. <?php
  2. // Create a stream
  3. $opts = array(
  4.   'http'=>array(
  5.     'method'=>"GET",
  6.     'header'=>"Accept-language: en\r\n" .
  7.               "Cookie: foo=bar\r\n"
  8.   )
  9. );

  10. $context = stream_context_create($opts);

  11. // Open the file using the HTTP headers set above
  12. $file = file_get_contents('http://www.example.com/', false, $context);
  13. ?>
復(fù)制代碼

論壇徽章:
7
寅虎
日期:2014-08-15 12:54:11獅子座
日期:2014-10-28 23:42:142015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT運維版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-08-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-10-10 06:20:00
9 [報告]
發(fā)表于 2011-07-06 10:55 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
10 [報告]
發(fā)表于 2011-07-06 14:48 |只看該作者
stream_socket_server 確實挺方便的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP