GlobalData變量共享組件
(要求Workerman版本>=3.3.0)
源碼地址:https://github.com/walkor/GlobalData
注意
GlobalData需要Workerman版本>=3.3.0
安裝
composer require workerman/globaldata
原理
利用PHP的__set __get __isset __unset
魔術(shù)方法觸發(fā)與GlobalData服務(wù)端通訊,實(shí)際變量存儲在GlobalData服務(wù)端。例如當(dāng)給客戶端類設(shè)置一個(gè)不存在的屬性時(shí),會觸發(fā)__set
魔術(shù)方法,客戶端類在__set
方法中向GlobalData服務(wù)端發(fā)送請求,存入一個(gè)變量。當(dāng)訪問客戶端類一個(gè)不存在的變量時(shí),會觸發(fā)類的__get
方法,客戶端會向GlobalData服務(wù)端發(fā)起請求,讀取這個(gè)值,從而完成進(jìn)程間變量共享。
require_once __DIR__ . '/vendor/autoload.php';
// 連接Global Data服務(wù)端
$global = new GlobalData\Client('127.0.0.1:2207');
// 觸發(fā)$global->__isset('somedata')查詢服務(wù)端是否存儲了key為somedata的值
isset($global->somedata);
// 觸發(fā)$global->__set('somedata',array(1,2,3)),通知服務(wù)端存儲somedata對應(yīng)的值為array(1,2,3)
$global->somedata = array(1,2,3);
// 觸發(fā)$global->__get('somedata'),從服務(wù)端查詢somedata對應(yīng)的值
var_export($global->somedata);
// 觸發(fā)$global->__unset('somedata'),通知服務(wù)端刪掉somedata及對應(yīng)的值
unset($global->somedata);