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

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

hansliao

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

7306 2 0
2個回答

hansliao

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

  • 暫無評論
walkor 打賞

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

  • hansliao 2018-11-02

    如果我單獨new 已Worker類 其中一個子進程只運行一個定時器,一個定時只運行一個計劃任務,任務完成后stopAll當前的子進程,這種方式是否可行?

  • walkor 2018-11-02

    stopAll當前的子進程沒看到有什么意思

  • hansliao 2018-11-02

    意思我能不能在一個定時任務完成后重啟當前子進程

  • 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()
    {
    //計劃任務
    $t = new Test();
    $t->test();
    //停止當前子進程
    Worker::stopAll();
    });
    };
    比如這樣的代碼

  • walkor 2018-11-02

    可以

  • hansliao 2018-11-02

    @1:好的萬分感謝

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