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

定時長任務(wù),內(nèi)存資源回收問題,望不吝賜教

hansliao

用WORKERMAN做了一臺推送/定時任務(wù)系統(tǒng),推送功能基本是白天才會有流量,晚上的時候會跑一些大量數(shù)據(jù)的任務(wù)(數(shù)據(jù)統(tǒng)計(jì)什么的),請問用WM的定時器執(zhí)行這些任務(wù)之后可以自動釋放對象資源么?還是需要手動釋放?釋放的內(nèi)存方便給白天的推送服務(wù)使用。@walker

7432 2 0
2個回答

hansliao

夜間定時任務(wù)代碼是已自定義類方法的方式在定時器中調(diào)用

  • 暫無評論
walkor 打賞

workerman內(nèi)存回收機(jī)制完全遵循php原有的GC機(jī)制。在workerman里業(yè)務(wù)代碼都是在函數(shù)或者類方法里運(yùn)行的,根據(jù)php的回收機(jī)制,函數(shù)或者類方法里臨時變量會自動回收。所以開發(fā)時基本不用考慮內(nèi)存回收問題,也不會有內(nèi)存泄漏,不需要手動unset。
?
滿足以下條件的變量需要注意:
1、global關(guān)鍵字的全局變量,并且變量是數(shù)組(不是數(shù)組不用關(guān)心)
2、static關(guān)鍵字的類的靜態(tài)變量,并且變量是數(shù)組(不是數(shù)組不用關(guān)心)
3、給worker對象臨時賦值的屬性,比如 worker->uidlist,并且這個屬性是數(shù)組(不是數(shù)組不用關(guān)心)
?
以上三種變量是數(shù)組的情況下需要注意,這些變量因?yàn)椴粚儆谂R時變量,所以會一直存在于內(nèi)存,注意不要讓數(shù)組里面的數(shù)據(jù)無限增加,否則會導(dǎo)致內(nèi)存泄漏。
?
另外定時器也需要注意,定時器也是用一個類的靜態(tài)數(shù)組存儲,如果無限增加定時器又從不刪除,會導(dǎo)致內(nèi)存泄漏。

  • hansliao 2018-11-02

    如果我單獨(dú)new 已Worker類 其中一個子進(jìn)程只運(yùn)行一個定時器,一個定時只運(yùn)行一個計(jì)劃任務(wù),任務(wù)完成后stopAll當(dāng)前的子進(jìn)程,這種方式是否可行?

  • walkor 2018-11-02

    stopAll當(dāng)前的子進(jìn)程沒看到有什么意思

  • hansliao 2018-11-02

    意思我能不能在一個定時任務(wù)完成后重啟當(dāng)前子進(jìn)程

  • hansliao 2018-11-02

    $task_worker = new Worker();
    $task_worker->name = 'TaskWorker';
    $task_worker->count = 2;
    $task_worker->onWorkerStart = function($task_worker)
    {
    $time_interval = 1;
    Timer::add($time_interval, function()
    {
    //計(jì)劃任務(wù)
    $t = new Test();
    $t->test();
    //停止當(dāng)前子進(jìn)程
    Worker::stopAll();
    });
    };
    比如這樣的代碼

  • walkor 2018-11-02

    可以

  • hansliao 2018-11-02

    @1:好的萬分感謝

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