国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

啟動進程,使用定時器檢測心跳

ppwq

以下代碼是心跳的demo
假如開了4個進程,豈不是每個進程都會每隔10秒輪詢檢測一次是否超時?
這樣操作是不是太頻繁了?
如果指定某個進程輪詢,其他進程的連接又檢測不到

==========
// 進程啟動后設置一個每10秒運行一次的定時器
$worker->onWorkerStart = function($worker) {
Timer::add(10, function()use($worker){
$time_now = time();
foreach($worker->connections as $connection) {
// 有可能該connection還沒收到過消息,則lastMessageTime設置為當前時間
if (empty($connection->lastMessageTime)) {
$connection->lastMessageTime = $time_now;
continue;
}
// 上次通訊時間間隔大于心跳間隔,則認為客戶端已經(jīng)下線,關閉連接
if ($time_now - $connection->lastMessageTime > HEARTBEAT_TIME) {
$connection->close();
}
}
});
};

3144 1 0
1個回答

phpcreeper

這個定時器內僅僅是純粹的檢測又沒有什么復雜的業(yè)務邏輯,一般不會對服務器造成壓力的;另外根據(jù)路由器節(jié)點防火墻的反空閑超時時間來評估定時頻率推薦最好設置為50秒。

  • ppwq 2021-03-28

    心跳不是推薦55秒?
    檢測間隔約等于或者大于心跳間隔,似乎也不會出什么問題.,
    遲一些斷開也沒啥問題

  • phpcreeper 2021-03-28

    小于60秒都是合理的、50秒、55秒都是相對合理的設置、別陷坑。

年代過于久遠,無法發(fā)表回答
??