上面的例子中,爬蟲是以普通模式運行的,上面的代碼放在網(wǎng)站項目中,也可以正常執(zhí)行,如果我們想讓爬蟲一直執(zhí)行,就需要使用守護進程模式。同樣是上面的代碼,我們只需要把執(zhí)行的命令增加一個 start 參數(shù),即會變成守護進程模式。
$ php start.php start
需要說明的是,普通模式下不依賴隊列,爬蟲只爬取 seed 中得地址,依次爬取完成后,程序即結(jié)束。而守護進程模式需要另外開啟隊列(內(nèi)存隊列、Redis 隊列等),但擁有更多的功能,如可以自動發(fā)現(xiàn)頁面中的鏈接加入隊列,循環(huán)爬取。以下是守護進程模式下的說明。
啟動
// 啟動爬蟲,開啟所有爬蟲進程
$ php start.php start
停止
// 停止爬蟲,關(guān)閉所有爬蟲進程
php start.php stop
清理
// 刪除日志文件,清空隊列信息
php start.php clean
<p class="danger"> 在守護模式中,如果需要使用數(shù)據(jù)庫、redis 等連接,需要在各種回調(diào)函數(shù)中建立連接,否則可能會發(fā)生意想不到的錯誤。<br> 建議使用單例模式,并在 startWorker 中關(guān)閉之前建立的連接。 </p>
更多建議: