本文整理汇总了PHP中select::can_read方法的典型用法代码示例。如果您正苦于以下问题:PHP select::can_read方法的具体用法?PHP select::can_read怎么用?PHP select::can_read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类select
的用法示例。
在下文中一共展示了select::can_read方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
$check_socks = array($listen_sock);
// 映射客户端socket和服务端socket
// $socket_maps1将客户端socket作为key
// $socket_maps2将服务端socket作为key
// 以内存换速度,并且方便下面的搜索
$socket_maps1 = array();
$socket_maps2 = array();
// 实例化select类
$select = new select($check_socks);
while (true) {
/*
print_r( $socket_maps );
print "<br />";
*/
// select轮询,超时2秒
foreach ($select->can_read(1) as $socket) {
// listen_sock可读,说明有人连接上来了
if ($socket == $listen_sock) {
// 接受新连接,并加入到轮训数组
$new_client = socket_accept($listen_sock);
$select->add($new_client);
socket_getpeername($new_client, $ip, $port);
echo "New client connected: {$ip}, {$port}<br />";
// 建立到真实服务器的socket
$server_sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($server_sock, "127.0.0.1", $listen_port);
// 建立真实服务器socket和真实客户端socket之间的映射关系
$socket_maps1[$new_client] = $server_sock;
$socket_maps2[$server_sock] = $new_client;
// 添加到select轮询中
$select->add($server_sock);