比如处理1000个请求之后,调用stopAll()来终止当前进程,再重启一个进程
// 每个进程最多执行1000个请求
define('MAX_REQUEST', 1000);
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function($connection, $data)
{
// 已经处理请求数
static $request_count = 0;
$connection->send('hello http');
// 如果请求数达到1000
if(++$request_count >= MAX_REQUEST)
{
/*
* 退出当前进程,主进程会立刻重新启动一个全新进程补充上来
* 从而完成进程重启
*/
Worker::stopAll();
}
};
如果这个进程维持着客户端链接,链接会断开。
像GatewayWorker这种进程模型,因为Gateway进程维持着客户端链接,BusinessWorker进程负责处理业务逻辑,所以BusinessWorker里面Worker::stopAll();不会导致客户端链接断开,也不会影响客户端