国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

php stream_socket_pair 亂入如何解決??

灰色v碰觸

本來(lái)使用 stream_socket_pair 是用來(lái)父子進(jìn)程間通信的,實(shí)現(xiàn)多進(jìn)程下,某個(gè)子進(jìn)程消息通過(guò)父進(jìn)程轉(zhuǎn)發(fā)給其他子進(jìn)程(類似于 qq),但是這碰到了一個(gè)問(wèn)題:

$count     = 4;
$childConn = [];
$parent    = null;

for ($i = 0; $i < $count; ++$i)
{
    $pair = stream_socket_pair(STREAM_PF_UNIX , STREAM_SOCK_STREAM , STREAM_IPRROTO_IP);
    $pid = pcntl_fork();

    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進(jìn)程失敗");
    } else if ($pid > 0) {
        fclose($pair);
        $child = $pair;
        $childConn = $child;
        // 監(jiān)聽(tīng)子進(jìn)程消息
        listenChild($child); 
    } else {
        fclose($pair);
        $parent = $pair;
        // 監(jiān)聽(tīng)父進(jìn)程消息
        listenParent($parent);
    }
}

以上目的就是為每個(gè)子進(jìn)程創(chuàng)建與父進(jìn)程的通信通道,然結(jié)果卻發(fā)生了令人意外的效果!

比如下面一個(gè)通信過(guò)程:

父進(jìn)程pid: 30246
子進(jìn)程pid: 30247 30248 30249 30250,每個(gè)子進(jìn)程中都監(jiān)聽(tīng)客戶端連接。

客戶端A 進(jìn)入子進(jìn)程 30247
客戶端B 進(jìn)入子進(jìn)程 30248
A 客戶端發(fā)送消息,子進(jìn)程 30247 接受到消息,要求轉(zhuǎn)發(fā)給 30248 中的客戶端 B
子進(jìn)程 30247 調(diào)用事先保存的 $parent(與父進(jìn)程的通信連接),發(fā)送消息
... 意外產(chǎn)生了??!
你可能想當(dāng)然的以為,他絕對(duì)是發(fā)送給父進(jìn)程(30246)!
而實(shí)際上不是!結(jié)果可能是其他子進(jìn)程!
到這兒,我就很郁悶了,stream_socket_pair 創(chuàng)建的成對(duì)套接字,怎么會(huì)發(fā)生這種現(xiàn)象??

我表示特別無(wú)語(yǔ)了 ....跪求大神解救

2880 1 0
1個(gè)回答

maq

貌似你的兩個(gè)連接用反了……

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??