Php 同步非阻塞,PHP IO编程之同步非阻塞

select/poll 同步非阻塞IO模型

$socket = socket_create_listen(8000) or die(“create server failed”);

socket_set_nonblock($socket);

$read = array();

while (1) {

$read = array_merge($read, array($socket));

$write = array();

$except = array();

if (true == socket_select($read, $write, $except, 0)) {

$conn = socket_accept($socket);

socket_write($conn, “hello world”);

socket_close($conn);

}

}

同步非阻塞模型比同步阻塞模型效率更高,但同步非阻塞模型也有缺点,就是Linux限制一个进程只能维持1024个连接,并且select/poll会随着连接数的增加而造成CPU消耗增加 select/poll的原理是循环检测连接是否有事件,如果维持着100W个连接,但在某个时间点只有一个连接向服务器发送数据,select/poll就需要循环100W次,而这100W次中只有一次是命中的,其余是无效的,这就白白浪费了CPU资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值