[請益] libevent使用socket_create

看板PHP作者 (None)時間11年前 (2014/08/22 18:32), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
最近在玩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://www.ptt.cc/bbs/PHP/M.1408703547.A.805.html

08/25 11:37, , 1F
如果是想作即時的聊天室可以考慮用NODE.JS
08/25 11:37, 1F

08/25 16:51, , 2F
改用pecl event?同樣是libevent的實作,但支援libevent2
08/25 16:51, 2F

08/26 10:33, , 3F
瞬間大量連線? 有超過 1000 個以上嗎?
08/26 10:33, 3F

08/27 17:31, , 4F
自己試出來的方法是使用socket_import_stream
08/27 17:31, 4F

08/27 17:31, , 5F
把stream_socket_server建立的stream串給上述的function
08/27 17:31, 5F

08/27 17:32, , 6F
再將socket_import_stream取得的socket做設定
08/27 17:32, 6F

08/27 17:32, , 7F
目前使用該方法變更backlog的數量, 有效!
08/27 17:32, 7F

08/27 17:33, , 8F
自己在測試的時候, 是模擬10000個socket建立然後丟封包
08/27 17:33, 8F

08/27 17:38, , 9F
實際使用strace追蹤, listen的backlog也確實被改變
08/27 17:38, 9F

08/27 17:39, , 10F
stream_socket_server的backlog大小為32, 可從設定變更?
08/27 17:39, 10F

08/29 14:47, , 11F
發現另外一種方式可以指定, stream_context_create
08/29 14:47, 11F
文章代碼(AID): #1JznmxW5 (PHP)
文章代碼(AID): #1JznmxW5 (PHP)