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); });
これに対応する解決策は、外部ストレージ サービスを使用することです。
数据库,如:MySQL、MongoDB 缓存服务器,如:Redis、Memcache 磁盘文件,多进程并发读写时需要加锁
通常のデータベースおよびディスク ファイル操作では、IO 待機時間が長くなります。したがって、次の使用をお勧めします:
Redis 内存数据库,读写速度非常快 /dev/shm 内存文件系统,读写操作全部在内存中完成,无IO消耗,性能极高 除了使用存储之外,还可以使用共享内存来保存数据
以上がswooleはマルチプロセスですか、それともマルチスレッドですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。