本文整理汇总了PHP中select::remove方法的典型用法代码示例。如果您正苦于以下问题:PHP select::remove方法的具体用法?PHP select::remove怎么用?PHP select::remove使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类select
的用法示例。
在下文中一共展示了select::remove方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: htmlentities
// 建立到真实服务器的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);
// $listen_sock的可读数据是因为有新连接,已经处理了。暂时去掉,因为下面开始处理数据转发
//select->remove( $listen_sock );
} else {
// 读取数据,失败则从轮询socket中删除,并关闭socket
$client_data = @socket_read($socket, 1024, PHP_NORMAL_READ);
if ($client_data === false) {
socket_close($socket);
$select->remove($socket);
echo "client disconnected.<br />";
continue;
}
// 如果socket在$socket_maps1的key中,说明是从客户端读到了数据
if (in_array($socket, array_keys($socket_maps1))) {
//echo "readed from client.<br />";
if (!socket_write($socket_maps1[$socket], $client_data)) {
socket_close($socket);
socket_close($socket_maps1[$socket]);
$select->remove($socket);
$select->remove($socket_maps1[$socket]);
print "Write to server error.<br />";
}
print htmlentities($client_data) . "</b><br />";
} elseif (in_array($socket, array_keys($socket_maps2))) {