hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - Swoole - 正文 请牢记本站网址www.sosophp.cn

swoole支撑多线程吗?【swoole】,swoole

2019-12-26Swoole搜搜PHP网63°c
A+ A-

Reactor线程

Swoole\Server的主历程是一个多线程的顺序。其中有一组很主要的线程,称之为Reactor线程。它就是真正处置惩罚TCP衔接,收发数据的线程。

Swoole的主线程在Accept新的衔接后,会将这个衔接分派给一个牢固的Reactor线程,并由这个线程担任监听此socket。在socket可读时读取数据,并举行协定剖析,将要求投递到Worker历程。在socket可写时将数据发送给TCP客户端。

分派的盘算体式格局是fd % serv->reactor_num

因为PHP言语不支撑多线程,因而Swoole运用多历程形式。在多历程形式下存在历程内存断绝,在事情历程内修正global全局变量和超全局变量时,在其他历程是无效的。

设置worker_num=1时,不存在历程断绝,能够运用全局变量保留数据

历程断绝

$fds = array();
$server->on('connect', function ($server, $fd){
    echo "connection open: {$fd}\n";
    global $fds;
    $fds[] = $fd;
    var_dump($fds);
});

$fds 虽然是全局变量,但只在当前的历程内有效。Swoole效劳器底层会建立多个Worker历程,在var_dump($fds)打印出来的值,只要部份衔接的fd。

对应的解决方案就是运用外部存储效劳:

数据库,如:MySQL、MongoDB
缓存效劳器,如:Redis、Memcache
磁盘文件,多历程并发读写时须要加锁

一般的数据库和磁盘文件操纵,存在较多IO等待时间。因而引荐运用:

Redis 内存数据库,读写速率非常快
/dev/shm 内存文件体系,读写操纵悉数在内存中完成,无IO斲丧,机能极高
除了运用存储以外,还能够运用同享内存来保留数据

引荐进修: swoole视频教程

以上就是swoole支撑多线程吗?的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
swoole支撑多线程吗?【swoole】,swoole

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: