socket - php pthreads主线程如何获取到子线程的scoket资源?
PHPz
PHPz 2017-04-10 14:39:30
[PHP讨论组]

php pthreads主线程如何获取到子线程的scoket资源?
最近公司要做的一个业务是,要用amqp的consume方法监听队列,同时与多个终端保持连接,一旦队列里有消息就马上下发给终端,不能有延迟,
我想到的是只能用线程来做,如果用多进程来实现,socket资源是不能共享的,但是现在用了pthreads 扩展也不行,从主线程中无法获取到子线程中的连接,大侠们请教下怎么弄

  <?php
class PrintServer extends Thread{
    public  $connections = array();
    public function __construct() {
        $this->connections = array();
    }
    public function run(){
        $connections = array();
        //监听端口
        $PORT = 8888;
        $sock = socket_create_listen($PORT);
        if (!$sock) {
            exit(1);
        }
//不阻塞
        socket_set_nonblock($sock);
        while (true) {
        //    $readfds = array_merge($this->connections, array($sock));
            $readfds = array_merge($connections, array($sock));
            $writefds = array();
            //选择一个连接,获取读、写连接通道
            $e= null;
            $flag = socket_select($readfds, $writefds, $e, $t = 5);
            if ($flag) {
                foreach ($readfds as $rfd) {
                    if ($rfd == $sock) {
                        //接受客户端连接
                        $newconn = socket_accept($sock);
                        $i = (int)$newconn;
                        //将当前客户端连接放如socket_select选择
                        $connections[$i] = $newconn;
                        //输入的连接资源缓存容器
                        $writefds[$i] = $newconn;
                        var_dump($connections);
                        $this->connections = $connections;
                        var_dump($this->connections);
                        echo "Welcome to the PHP Chat Server!\n";
                        continue;
                    }
                }
            }
            echo "a\n";
        }
    }
}
$my = new PrintServer();
$my->start();
while(true){
   var_dump($my->connections);
   sleep(3);
}
PHPz
PHPz

学习是最好的投资!

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号