reloadable

คำอธิบาย:

bool Worker::$reloadable

เมื่อเรียกใช้ php start.php reload จะส่งสัญญาณ reload (SIGUSR1) ไปยังทุกโปรเซสย่อย

โปรเซสย่อยที่ได้รับสัญญาณ reload จะออกจากโปรเซสโดยอัตโนมัติ และโปรเซสหลักจะเริ่มโปรเซสใหม่อีกครั้ง โดยทั่วไปแล้วจะใช้เพื่อปรับปรุงโค้ดธุรกิจ

เมื่อโปรเซส $reloadable เป็น false จะมีเพียงการเรียกใช้ onWorkerReload เมื่อได้รับสัญญาณ reload แต่จะไม่เริ่มโปรเซสปัจจุบันใหม่

ตัวอย่างเช่น ในโมเดล Gateway/Worker โปรเซส gateway จะรับผิดชอบในการรักษาการเชื่อมต่อกับไคลเอนต์ ขณะที่โปรเซส worker จะรับผิดชอบในการประมวลผลคำขอ การตั้งค่าแอตทริบิวต์ reloadable ของโปรเซส gateway เป็น false จะทำให้สามารถปรับปรุงโค้ดธุรกิจโดยไม่ต้องตัดการเชื่อมต่อกับไคลเอนต์

ตัวอย่าง

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:8484');
// ตั้งค่าการ restart ของ instance นี้เมื่อได้รับสัญญาณ reload
$worker->reloadable = false;
$worker->onWorkerStart = function($worker)
{
    echo "Worker starting...\n";
};
// เรียกใช้ worker
Worker::runAll();