ホームページ >PHPフレームワーク >Swoole >swooleはマルチプロセスですか、それともマルチスレッドですか?

swooleはマルチプロセスですか、それともマルチスレッドですか?

(*-*)浩
(*-*)浩オリジナル
2019-12-06 14:23:294209ブラウズ

swooleはマルチプロセスですか、それともマルチスレッドですか?

PHP 言語はマルチスレッドをサポートしていないため、Swoole はマルチプロセス モードを使用します。マルチプロセスモードではプロセスメモリ分離があり、作業プロセス内でグローバル変数やスーパーグローバル変数を変更すると、他のプロセスでは無効になります。 (推奨学習: 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 グローバル変数ですが、 current current プロセス内で有効です。 Swoole サーバーの最下層では複数のワーカー プロセスが作成され、var_dump($fds) に出力される値には接続された fd の一部のみが含まれます。

これに対応する解決策は、外部ストレージ サービスを使用することです。

数据库,如:MySQL、MongoDB
缓存服务器,如:Redis、Memcache
磁盘文件,多进程并发读写时需要加锁

通常のデータベースおよびディスク ファイル操作では、IO 待機時間が長くなります。したがって、次の使用をお勧めします:

Redis 内存数据库,读写速度非常快
/dev/shm 内存文件系统,读写操作全部在内存中完成,无IO消耗,性能极高
除了使用存储之外,还可以使用共享内存来保存数据

以上がswooleはマルチプロセスですか、それともマルチスレッドですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。