onWorkerReload

Yêu cầu (workerman >= 3.2.5)

Giới thiệu:

callback Worker::$onWorkerReload

Tính năng này không thường được sử dụng.

Thiết lập callback được thực hiện khi Worker nhận tín hiệu reload.

Bạn có thể sử dụng callback onWorkerReload để làm nhiều việc, chẳng hạn như tải lại các tệp cấu hình kinh doanh mà không cần khởi động lại tiến trình.

Chú ý

Hành động mặc định của tiến trình con khi nhận tín hiệu reload là thoát và khởi động lại, để tiến trình mới tải lại mã kinh doanh và hoàn thành việc cập nhật mã. Do đó, sau khi reload, việc tiến trình con thoát ngay lập tức sau khi thực hiện callback onWorkerReload là hiện tượng bình thường.

Nếu bạn chỉ muốn tiến trình con thực hiện onWorkerReload mà không thoát sau khi nhận tín hiệu reload, bạn có thể thiết lập thuộc tính reloadable của instance Worker tương ứng bằng false khi khởi tạo instance Worker.

Tham số của hàm callback

$worker

tức là đối tượng Worker

Ví dụ

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

$worker = new Worker('websocket://0.0.0.0:8484');
// Thiết lập reloadable là false, tức là tiến trình con không thực hiện khởi động lại khi nhận tín hiệu reload
$worker->reloadable = false;
// Thực hiện reload và thông báo cho tất cả khách hàng rằng server đã thực hiện reload
$worker->onWorkerReload = function(Worker $worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send('worker reloading');
    }
};
// Chạy worker
Worker::runAll();

Ghi chú: Ngoài việc sử dụng hàm ẩn danh làm callback, bạn cũng có thể tham khảo ở đây để sử dụng các cách viết callback khác.