首頁 > php框架 > Swoole > swoole是多進程還是多執行緒

swoole是多進程還是多執行緒

(*-*)浩
發布: 2019-12-06 14:23:29
原創
4211 人瀏覽過

swoole是多進程還是多執行緒

由於PHP語言不支援多線程,因此Swoole使用多進程模式。在多進程模式下存在進程記憶體隔離,在工作進程內修改global全域變數和超全域變數時,在其他行程是無效的。             (建議學習: swoole視訊教學

设置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是多進程還是多執行緒的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板