swoole的全局变量共享范围

在事件onstart/onworkstart之前定义的全局变量是共享的,之后的事件因为多进程的原因并不保证可共享。

但不一定共享全局变量就好,比如mysql或redis就不适合共用一个连接。

 

websocket的全局变量共享

socket的事件是共享的,但onRequest事件不共享。

 

是否可以共用1个redis或mysql连接

绝对不可以。必须每个进程单独创建RedisMySQLPDO连接,其他的存储客户端同样也是如此。原因是如果共用1个连接,那么返回的结果无法保证被哪个进程处理。持有连接的进程理论上都可以对这个连接进行读写,这样数据就发生错乱了。

所以在多个进程之间,一定不能共用连接

  • swoole_server中,应当在onWorkerStart中创建连接对象
  • swoole_process中,应当在swoole_process->start后,子进程的回调函数中创建连接对象
  • 本页面所述信息对使用pcntl_fork的程序同样有效

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值