reloadable
說明:
bool Worker::$reloadable
執(zhí)行php start.php reload
時會向所有子進(jìn)程發(fā)送reload信號(SIGUSR1)。
子進(jìn)程收到reload信號后會自動退出然后主進(jìn)程會自動拉起一個新的進(jìn)程,一般用于更新業(yè)務(wù)代碼。
當(dāng)進(jìn)程$reloadable為false時,收到reload信號后只會觸發(fā) onWorkerReload , 并不會重啟當(dāng)前進(jìn)程。
例如Gateway/Worker模型中的gateway進(jìn)程負(fù)責(zé)維持客戶端連接工作,worker進(jìn)程負(fù)責(zé)處理請求。
設(shè)置gateway進(jìn)程的reloadable屬性為false則在reload可以做到在不斷開客戶端連接的情況下更新業(yè)務(wù)代碼。
范例
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
// 設(shè)置此實例收到reload信號后是否重啟
$worker->reloadable = false;
$worker->onWorkerStart = function($worker)
{
echo "Worker starting...\n";
};
// 運(yùn)行worker
Worker::runAll();