作者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/cn.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