1.构造函数__construct
Worker::__construct([string$listen,array$context])
初始化一个Worker容器实例,可以设置容器的一些属性和回调接口,完成特定功能。
2.常用属性
常用属性见表7.1。
表7.1
3.回调属性
回调属性见表7.2。
表7.2
4.接口
接口见表7.3。
表7.3
5.listen回调函数的使用
例如一个http Worker启动后实例化一个webSocket Worker,那么这个进程即能通过http协议访问,又能通过webSocket协议访问。由于webSocket Worker和http Worker在同一个进程中,所以它们可以访问共同的内存变量,共享所有Socket连接。可以做到接收http请求,然后操作webSocket客户端完成向客户端推送数据类似的效果。
注意:如果PHP版本<=7.0,则不支持在多个子进程中实例化相同端口的Worker。例如A进程创建了监听2016端口的Worker,那么B进程就不能再创建监听2016端口的Worker,否则会报Address already in use错误。例如下面的代码是无法运行的。(www.xing528.com)
如果PHP版本>=7.0,可以设置Worker->reusePort=true,这样可以做到多个子进程创建相同端口的Worker。见下面的例子:
6.示例:php后端及时推送消息给客户端
原理:
(1)建立一个webSocket Worker,用来维持客户端长连接;
(2)webSocket Worker内部建立一个text Worker;
(3)webSocket Worker与text Worker是同一个进程,可以方便地共享客户端连接;
(4)某个独立的php后台系统通过text协议与text Worker通讯;
(5)text Worker操作webSocket连接完成数据推送。
代码及步骤:
push.php
启动后端服务php push.php start-d
前端接收推送的js代码:
后端推送消息的代码:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。