問題說明:larbin程式爬取某個**,在爬取完所有連線後,如果有定義爬取完後exit(),則程式會終止程序;如果沒有定義,larbin程式只會會輸出一些統計資訊,其他貌似都沒工作了,對於新增的連線也不會爬取。
鑑於以上問題,larbin程式需要重啟。一下介紹兩個方案,**就不貼了。
方案一:
主要思想:
判斷佇列( urlsdisk->getlength(),urlsdiskwait->getlength()
)是否為空,如果隊列為空則說明已經沒有需要爬取的url連線了,larbin程式需要重新啟動。
方案二:
主要思想:
定義urls(到目前已經獲取的url數量),pages(到目前已經獲取的pages),old_url(8秒前已經獲取的url數量),old_pages(8秒前已經獲取的page數量)
如果目前獲取的url、pages數量和8秒前獲取的url、pages數量相等,則判斷larbin程式已經完成了爬取,需要重啟。
重啟步驟,先建立子程序,子程序啟動新的larbin程式後,父程序殺死原來的larbin程式。
swoole 平滑重啟方案
http服務在開始時設定程序別名 swoole set process name swoole master netstart anp grep 檢視可知 該程序的別名和程序id 可以通過別名獲取程序id pidof 別名 得到 程序id kill usr1 程序id 可以平滑重啟 示例 如下 re...
VC , 重啟程式
tchar pbuf max path getmodulefilename null,pbuf,max path startupinfo startupinfo process information proc info memset startupinfo,0,sizeof startupinfo...
watchdog 核心失敗的重啟方案
1 在核心中配置看門狗驅動 linux 2.6.32.2 核心具有完善的s3c2440 的看夢狗驅動,我們只需配置一下就可以使用 了。在核心源 目錄執行 make menuconfig,進入核心配置主選單,依次選擇進入如 下子選單 device drivers watchdog timer supp...