首页   注册   登录
 haiyang416 最近的时间轴更新
ONLINE

haiyang416

  •   程序员
    V2EX 第 21225 号会员,加入于 2012-05-22 10:51:32 +08:00
    今日活跃度排名 5332
    惟精惟一,允執厥中。
    haiyang416 最近回复了
    易社保,40 块每月服务费。
    @awanganddong
    $readFds 里面装的就是所有需要监听的描述符,可能有服务器的 fd,也可能有客户端连接的 fd,在经过 socket_select 之后,该函数会删除 $readFds 里暂时不可读的 fd。

    $readFds = [$fd];
    当前有新连接
    socket_accept 之后增加了 $conn1,再次进入 while 循环。
    --------------------------------------------------------
    $readFds = [$fd, $conn1];
    当前又有新连接
    socket_accept 之后增加了 $conn2,再次进入 while 循环。
    --------------------------------------------------------
    $readFds = [$fd, $conn1, $conn2];
    比如当前没有新连接,$conn1 收到了消息,$conn2 没有收到消息,
    那么 socket_select 函数就会把 $fd 和 $conn2 从数组中删除,即 $readFds = [$conn1];
    处理完 $conn1 后会再次进入 while 循环。
    --------------------------------------------------------
    $readFds = [$fd, $conn1, $conn2];
    当前又有新连接,$conn1 和 $conn2 没有收到消息
    那么 socket_select 函数就会把 $conn1 和 $conn2 从数组中删除,即 $readFds = [$fd];
    socket_accept 之后增加了 $conn3,再次进入 while 循环。
    --------------------------------------------------------
    $readFds = [$fd, $conn1, $conn2, $conn3];
    3 天前
    回复了 javaWeber 创建的主题 程序员 要不要重写?如何重写一个老项目?
    除非你对项目了如指掌,否则不要重构。
    不过私下重构着玩倒是无所谓,只要你的时间足够。
    @awanganddong 跟情况无关,你的理解有问题。在 socket_select 之后 $readFds 里都是可以用于读取的“句柄”,它已经被 socket_select 函数修改了,这时你不应该自己往这个数组里加入新的数据,除非你可以确定它是有数据可读的。你只需要把新的连接加入到 $conn 数组,等待 while 循环再次调用 socket_select 即可。
    注释掉这行:$readFds[$i] = $newConn;
    你刚 accept 就把它加入到 $readFds 数组,这时它还没有数据读取,接着马上在来一个阻塞的 socket_read,
    你的程序会一直阻塞到这个连接有数据发送才会执行后面的代码。
    并且每个新连接过来都会出现这个情况。
    空气还是有些雾霾
    只得了 76 的路过,老是根据英文的发音去按。
    工具挺好的,支持一下。
    如果是我的话,会更倾向于是后代业务代码的问题,2333
    21 天前
    回复了 ysoserious 创建的主题 问与答 这种情况下可以读到 session 吗?
    @ysoserious 这些都要看 a 的逻辑是怎么处理的,a 一直带状态的话,它和 b 之间多次请求都可以当作同一个会话,b 可以读取。但如果 a 不带状态,则不管谁请求的都拿不到数据。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4232 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 9ms · UTC 09:25 · PVG 17:25 · LAX 02:25 · JFK 05:25
    ♥ Do have faith in what you're doing.