คอมโพเนนต์แบ่งปันตัวแปร GlobalData
(ต้องใช้เวอร์ชัน Workerman >= 3.3.0)
ที่อยู่ของโค้ด: https://github.com/walkor/GlobalData
ข้อควรระวัง
GlobalData ต้องการเวอร์ชันของ Workerman ที่มีค่า >= 3.3.0
การติดตั้ง
composer require workerman/globaldata
หลักการทำงาน
การใช้งานของ GlobalData นี้ใช้เมทอดมายเจิก __set __get __isset __unset
ของ PHP ในการกระตุ้นการสื่อสารกับเซิร์ฟเวอร์ 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') เพื่อตรวจสอบว่าเซิร์ฟเวอร์ได้เก็บคีย์ 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);