作者b60413 (None)
看板PHP
標題[請益] libevent使用socket_create
時間Fri Aug 22 18:32:23 2014
最近在玩PHP搭配libevent做簡易聊天室,
但發現同時開啟大量連線數的時候,
連接就會開始斷斷續續(需等前面的連線成功上才可連接),
於是打算去細部調整socket的選項(backlog之類的設定),
但stream_socket_server function包的太上層, 所以無法針對底層去做設定,
因此想改用較底層的socket_create, socket_bind, socket_listen等socket相關function去寫,
但改寫完以後卻發現libevent的event_set function第二個參數只能使用file descriptor的型態傳入,
想請問php socket是否有辦法取得file descriptor,
或者有其他方法可以改寫或實做?
謝謝.
--
http://www.myspace.com/soundtrack0220
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.102.129
※ 文章網址: http://webptt.com/m.aspx?n=bbs/PHP/M.1408703547.A.805.html
1F:→ cocobox: 如果是想作即時的聊天室可以考慮用NODE.JS 08/25 11:37
2F:推 rickysu: 改用pecl event?同樣是libevent的實作,但支援libevent2 08/25 16:51
3F:→ dou0228: 瞬間大量連線? 有超過 1000 個以上嗎? 08/26 10:33
4F:→ b60413: 自己試出來的方法是使用socket_import_stream 08/27 17:31
5F:→ b60413: 把stream_socket_server建立的stream串給上述的function 08/27 17:31
6F:→ b60413: 再將socket_import_stream取得的socket做設定 08/27 17:32
7F:→ b60413: 目前使用該方法變更backlog的數量, 有效! 08/27 17:32
8F:→ b60413: 自己在測試的時候, 是模擬10000個socket建立然後丟封包 08/27 17:33
9F:→ b60413: 實際使用strace追蹤, listen的backlog也確實被改變 08/27 17:38
10F:→ b60413: stream_socket_server的backlog大小為32, 可從設定變更? 08/27 17:39
11F:→ b60413: 發現另外一種方式可以指定, stream_context_create 08/29 14:47