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');

// 觸發 $global->__isset('somedata') 查詢服務端是否儲存了 key 為 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);