CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息
生活随笔
收集整理的這篇文章主要介紹了
CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目中的需求:
在自動更新從youtube獲取的頻道的時候,同時進行頻道節目的自動更新功能。
由于在其中涉及到很多的關于使用php的curl處理方案。
數據量很大,我的解決思路我給出了四條解決方案:
1.分步進行處理
中間可能涉及到的知識點:redis的訂閱發布功能,
思路:第一步完成->發布給:第二步->第二步完成->第三部,依次類推。。。
要讓php的程序代碼一直在內存中進行,只要第一步完成,就會觸發php+redis的發布消息事件,
由于寫的接口的功能,一直常駐內存,那么有一個要求是,在第二次,第三次。。。處理的時候,內存的變化,只能是執行前的內存要大于或者等于執行后的內存
不然,最后的結果是:php分配的內存被消耗完畢,最終導致php的內存溢出。
使用CI框架處理這種情況,發現在進行批量插入和過濾去重的時候,內存的占用比較高【當然中間是經過一系列的排查的】
查找關于ci的相關的文檔:
很多程序員在使用codeigniter CLI下執行一個大批量數據導入的問題時,會一直出現內存過高的情況,下面對此分析器原因及解決辦法。CI db會將所有的查詢sql和和sql執行時間保存下來,對于類似百萬級大數據量的導入問題來說,其執行的sql記錄都會被保存在內容中,這就占用了大量的內容直至腳本結束。解決辦法: 當你執行大數量的db操作時,記得設置: 復制代碼 代碼如下: $this->db->save_queries = FALSE;
至此,第一種思路就是如此的解決。
至于其他的思路,由于對于前段后和后端的改動都比較大,這里就暫不做敘述了。
轉載于:https://www.cnblogs.com/bing-yu12/p/6723273.html
總結
以上是生活随笔為你收集整理的CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新概念英语(1-61)A bad col
- 下一篇: php+ajax+jquery实现jso