php socket IO阻塞方式的Server/Client

本文展示了在PHP CLI模式下,使用阻塞I/O方式实现的Socket Server和Client示例。当一个Client连接时,其他Client将被阻塞,直到当前连接断开。这种方式说明了简单的Socket通信中的IO阻塞现象。
摘要由CSDN通过智能技术生成
php的socket编程和java的socket编程区别还是蛮大的,默认情况下php的socket不能像java socket开启多线程来同时接收多个客户端的连接。

使用 telnet 命令同时打开多个客户端测试,你会发现服务器一个时间只处理一个客户端,其他需要在后面“排队”;只有当前的客户端端口才会处理下一个连接

这就是阻塞 IO 的特点,这种模式的弱点很明显,效率极低

网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式

同步、异步和阻塞、非阻塞是组合关系,因此有4种方式:

同步阻塞、同步非阻塞、异步阻塞、异步非阻塞

linux有五种I/O模型

1)阻塞I/O(blocking I/O)

2)非阻塞I/O (nonblocking I/O)

3)I/O复用(select 和poll) (I/O multiplexing)

4)信号驱动I/O (signal driven I/O (SIGIO))

5)异步I/O (asynchronous I/O (the POSIX aio_functions))

前四种都是同步,只有最后一种才是异步IO

详细了解: 浅谈socket同步和异步、阻塞和非阻塞、I/O模型_php技巧

 

以下是php cli模式下阻塞I/O方式的socekt server/client 示例代码


server.php

<?php
/**
 * socket_server.php.
 * User: lvfk
 * Date: 2017/11/20 0020
 * Time: 17:28
 * Desc: php socket server
 */

/*
+-------------------------------
*    @socket通
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值