GlobalData変数共有コンポーネント
(要件: Workermanバージョン>=3.3.0)
ソースコードの場所:https://github.com/walkor/GlobalData
注意
GlobalDataにはWorkermanバージョン>=3.3.0が必要です。
インストール
composer require workerman/globaldata
原理
PHPの__set __get __isset __unset魔法メソッドを利用してGlobalDataサーバーと通信をトリガーし、実際の変数はGlobalDataサーバーに保存されます。例えば、クライアントクラスに存在しないプロパティを設定しようとすると、__set魔法メソッドがトリガーされ、クライアントクラスは__setメソッド内でGlobalDataサーバーにリクエストを送り、変数を保存します。クライアントクラスの存在しない変数にアクセスすると、クラスの__getメソッドがトリガーされ、クライアントはGlobalDataサーバーにリクエストを送信してこの値を読み取り、プロセス間の変数共有を実現します。
require_once __DIR__ . '/vendor/autoload.php';
// Global Dataサーバーに接続
$global = new GlobalData\Client('127.0.0.1:2207');
// 変数$somedataの値がサーバーに保存されているか確認するために$global->__isset('somedata')をトリガー
isset($global->somedata);
// $global->__set('somedata',array(1,2,3))をトリガーし、サーバーにsomedataに対応する値をarray(1,2,3)として保存するよう通知
$global->somedata = array(1,2,3);
// $global->__get('somedata')をトリガーし、サーバーからsomedataに対応する値を取得する
var_export($global->somedata);
// $global->__unset('somedata')をトリガーし、サーバーにsomedataとそれに対応する値を削除するよう通知
unset($global->somedata);