Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ratchet php上运行AD_Php_Multithreading_Sockets_Pthreads_Ratchet - Fatal编程技术网

如何在ratchet php上运行AD

如何在ratchet php上运行AD,php,multithreading,sockets,pthreads,ratchet,Php,Multithreading,Sockets,Pthreads,Ratchet,我正在使用Ratchet php web socket创建一个web应用程序,我希望在这样的情况下使用它:当客户端通过onOpen发送连接到套接字时,它将从数据库中检索一些数据,并将一些数据发送回客户端。问题是,当我有两个客户端连接到同一个web服务器时,onOpen事件直到第一个客户端完成执行(从db检索数据需要时间)才触发,这意味着它不是异步/并发的 我知道我可以使用pthread创建线程,但我无法将连接对象传递给线程,如中所述: 这是我的代码供您参考: public function

我正在使用Ratchet php web socket创建一个web应用程序,我希望在这样的情况下使用它:当客户端通过
onOpen
发送连接到套接字时,它将从数据库中检索一些数据,并将一些数据发送回客户端。问题是,当我有两个客户端连接到同一个web服务器时,
onOpen
事件直到第一个客户端完成执行(从db检索数据需要时间)才触发,这意味着它不是异步/并发的

我知道我可以使用pthread创建线程,但我无法将连接对象传递给线程,如中所述:

这是我的代码供您参考:

  public function onOpen(ConnectionInterface $conn) {
        $ch = curl_init();


        curl_setopt($ch, CURLOPT_URL, 'http://www.mywebsite.com/example.php');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');

        $result = curl_exec($ch);

        echo "finished executing";
    } 

你能提供一些代码吗?@Mu'menYassin你好,谢谢你的回复,我更新了我的问题。我假设你正在尝试从全局范围访问
$data123
。@Mu'menYassin不,对不起,我的意思是,如果我的页面很大,curl请求需要10秒的时间才能响应。问题是,当第二个客户端连接到套接字时,onOpen事件直到10秒后才会触发。在
onOpen
中创建一个新线程,然后全局使用
thread::全局(function(){//curl请求在这里…})发送您的请求?