การเชื่อมต่อ
คำอธิบาย:
array Worker::$connections
รูปแบบคือ
array(id=>connection, id=>connection, ...)
คุณสมบัตินี้เก็บวัตถุการเชื่อมต่อของกระบวนการปัจจุบันทั้งหมดของลูกค้า โดยที่ id คือ หมายเลข id ของการเชื่อมต่อ connection ดูรายละเอียดได้ที่คุณสมบัติ id ของ TcpConnection。
$connections
มีประโยชน์มากในการกระจายข้อมูลหรือในการรับวัตถุการเชื่อมต่อตาม id ที่กำหนดไว้
หากทราบว่าหมายเลขการเชื่อมต่อคือ $id
คุณสามารถหาวัตถุการเชื่อมต่อที่สอดคล้องกันได้อย่างสะดวกผ่าน$worker->connections[$id]
และจากนั้นคุณสามารถดำเนินการกับการเชื่อมต่อของ socket ที่สอดคล้องกัน เช่น ส่งข้อมูลผ่าน $worker->connections[$id]->send('...')
โปรดทราบ: หากการเชื่อมต่อถูกปิด (กระตุ้น onCLose) จะลบรายการconnection
สอดคล้องกันออกจากอาร์เรย์$connections
ประณณวิธี : นักพัฒนาไม่ควรดำเนินการแก้ไขคุณสมบัตินี้เพราะอาจทำให้เกิดสถานการณ์ที่ไม่สามารถคาดเดาได้
ตัวอย่าง
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('text://0.0.0.0:2020');
// เมื่อกระบวนการปัจจุบันเริ่มต้นกำหนดตัวนับเวลาที่จะส่งข้อมูลไปที่ลูกค้าทุกคน
$worker->onWorkerStart = function($worker)
{
// ตั้งเวลา ทุก 10 วินาที
Timer::add(10, function()use($worker)
{
// วิ่งทั้งหมดของการเชื่อมต่อลูกค้าทุกตัว และส่งเวลาของเซิฟเวอร์ทันที
foreach($worker->connections as $connection)
{
$connection->send(time());
}
});
};
// รัน worker
Worker::runAll();