CI框架 守護進程nohup讓PHP以常駐內存的形式執行訂閱消息

項目中的需求:php

  在自動更新從youtube獲取的頻道的時候,同時進行頻道節目的自動更新功能。程序員

  因爲在其中涉及到不少的關於使用php的curl處理方案。redis

  數據量很大,個人解決思路我給出了四條解決方案:sql

  1.分步進行處理後端

  中間可能涉及到的知識點:redis的訂閱發佈功能,框架

  思路:第一步完成->發佈給:第二步->第二步完成->第三部,依次類推。。。curl

  要讓php的程序代碼一直在內存中進行,只要第一步完成,就會觸發php+redis的發佈消息事件,codeigniter

  因爲寫的接口的功能,一直常駐內存,那麼有一個要求是,在第二次,第三次。。。處理的時候,內存的變化,只能是執行前的內存要大於或者等於執行後的內存大數據

  否則,最後的結果是:php分配的內存被消耗完畢,最終致使php的內存溢出。this

  使用CI框架處理這種狀況,發如今進行批量插入和過濾去重的時候,內存的佔用比較高【固然中間是通過一系列的排查的】

  查找關於ci的相關的文檔:

  

不少程序員在使用codeigniter CLI下執行一個大批量數據導入的問題時,會一直出現內存太高的狀況,下面對此分析器緣由及解決辦法。

CI db會將全部的查詢sql和和sql執行時間保存下來,對於相似百萬級大數據量的導入問題來講,其執行的sql記錄都會被保存在內容中,這就佔用了大量的內容直至腳本結束。

解決辦法:
當你執行大數量的db操做時,記得設置:
複製代碼 代碼以下:
$this->db->save_queries = FALSE;

  至此,第一種思路就是如此的解決。

   至於其餘的思路,因爲對於前段後和後端的改動都比較大,這裏就暫不作敘述了。

相關文章
相關標籤/搜索