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

想問(wèn)下這樣設(shè)置一定請(qǐng)求會(huì)重啟當(dāng)前進(jìn)程的話。重啟當(dāng)前進(jìn)程之前發(fā)送的數(shù)據(jù)會(huì)失敗嗎?

codeninjia
$worker->onMessage = function($connection, $data) {
$connection->send($ret);
? ? static $request_count;
? ? // 業(yè)務(wù)處理略
? ? if(++$request_count > 10000) {
? ? ? ? // 請(qǐng)求數(shù)達(dá)到10000后退出當(dāng)前進(jìn)程,主進(jìn)程會(huì)自動(dòng)重啟一個(gè)新的進(jìn)程
? ? ? ? Worker::stopAll();
? ? }
};

我想知道這樣處理的話send出去的數(shù)據(jù)能發(fā)送成功嗎?當(dāng)處理到一定請(qǐng)求之后重啟當(dāng)前進(jìn)程的話。

3129 1 0
1個(gè)回答

walkor 打賞

正常情況下都會(huì)發(fā)送成功,極端情況可能不成功,比如發(fā)送了超大的數(shù)據(jù),數(shù)據(jù)積壓在workerman的數(shù)據(jù)緩沖區(qū)的情況。
?
如果是短連接業(yè)務(wù),最好是有個(gè)判斷 count($worker->connections) == 0 的時(shí)候執(zhí)行重啟。

  • codeninjia 2019-03-20

    我這邊最多發(fā)送的數(shù)據(jù)不會(huì)超過(guò)100k 短連接的情況是不是不會(huì)出現(xiàn)發(fā)送失敗。
    這個(gè)判斷我加上吧防止萬(wàn)一。謝謝了哈?;貜?fù)的好及時(shí)哈哈

  • codeninjia 2019-03-20

    再麻煩問(wèn)下 count($worker->connections) == 0 這個(gè)等于0 是指當(dāng)前進(jìn)程沒(méi)有連接進(jìn)來(lái)是嗎。那如果一直在處理是不是就一直無(wú)法觸發(fā)了。我是寫在onmessage 里面的。最后一發(fā)發(fā)送send的話。這個(gè)值會(huì)為空嗎。

  • walkor 2019-03-20

    send之后不會(huì)為空,close后有可能為空

  • codeninjia 2019-03-21

    @1:那如果加上這個(gè)判斷的話是不是永不不會(huì)觸發(fā)重啟的條件呢?還是這個(gè)不要寫在onmessage里

  • walkor 2019-03-21

    你可以在onWorkerStart里寫個(gè)定時(shí)器,定時(shí)檢查

  • codeninjia 2019-03-21

    @1:懂了就是定時(shí)檢查次進(jìn)程是否沒(méi)有新連接進(jìn)來(lái)并且已經(jīng)處理了指定數(shù)量的請(qǐng)求之后就重啟這樣是吧。

  • walkor 2019-03-21

    對(duì)

  • codeninjia 2019-03-21

    想再問(wèn)下

    $worker->onMessage = function ($connection, $data) {
    global $request_count;
    $request_count++;
    })

    $worker->onWorkerStart = function ($worker) {
    global $request_count;
    Timer::add(10, function () use ($worker, $request_count) {
    if ($request_count > Item\Config::$maxRequest&&count($worker->connections) == 0) {
    // 請(qǐng)求數(shù)達(dá)到指定數(shù)量請(qǐng)求后退出當(dāng)前進(jìn)程,主進(jìn)程會(huì)自動(dòng)重啟一個(gè)新的進(jìn)程
    Worker::stopAll();
    }

    });

    };

    //為什么在定時(shí)器里取到的$request_count 一直是null呢。

  • walkor 2019-03-21

    onWorkerStart里定義下$request_count = 0;,沒(méi)賦值是null

  • codeninjia 2019-03-21

    @1:我的意思是我在onmessage ++了定時(shí)器 里取值還一直是0呢,我初始值改為0 也一樣

  • codeninjia 2019-03-21

    @1:我寫錯(cuò)了。我改成這樣就行了

    $worker->onWorkerStart = function ($worker) {
    // 將db實(shí)例存儲(chǔ)在全局變量中(也可以存儲(chǔ)在某類的靜態(tài)成員中)
    global $request_count;
    $request_count=0;
    Timer::add(10, function () use ($worker) {
    global $request_count;
    if ($request_count > Item\Config::$maxRequest&&count($worker->connections) == 0) {
    // 請(qǐng)求數(shù)達(dá)到指定數(shù)量請(qǐng)求后退出當(dāng)前進(jìn)程,主進(jìn)程會(huì)自動(dòng)重啟一個(gè)新的進(jìn)程
    Worker::stopAll();
    }

    });

    };

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??