stopAll
void Worker::stopAll(void)
現在のプロセスを停止し、終了します。
注意
Worker::stopAll()は現在のプロセスを停止するために使用され、現在のプロセスが終了した後、メインプロセスは直ちに新しいプロセスを立ち上げます。全体のworkermanサービスを停止したい場合は、posix_kill(posix_getppid(), SIGINT)を呼び出してください。
パラメータ
パラメータはありません
戻り値
戻り値はありません
例 max_request
以下の例では、サブプロセスが1000件のリクエストを処理した後にstopAllを実行して終了し、完全に新しいプロセスを再起動します。これはphp-fpmのmax_request属性に似ており、主にphpビジネスコードのバグによるメモリリーク問題を解決するために使用されます。
start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 各プロセスは最大1000件のリクエストを処理する
define('MAX_REQUEST', 1000);
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
// すでに処理されたリクエスト数
static $request_count = 0;
$connection->send('hello http');
// リクエスト数が1000に達した場合
if(++$request_count >= MAX_REQUEST)
{
/*
* 現在のプロセスを終了し、メインプロセスが直ちに新しいプロセスを再立ち上げる
* ことによりプロセスの再起動を完了します
*/
Worker::stopAll();
}
};
Worker::runAll();