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