我目前正在建立一個網絡爬蟲,但要開始我想測試它在我的共享虛擬主機,顯然他們不允許set_time_limit
所以我不能確保腳本繼續運行超過30秒。PHP啓動腳本,它超時
在下一次超時之前啓動PHP腳本的最佳方式是什麼? 我在考慮將上次抓取的網址保存在文件中,但還有其他選項嗎?
我目前正在建立一個網絡爬蟲,但要開始我想測試它在我的共享虛擬主機,顯然他們不允許set_time_limit
所以我不能確保腳本繼續運行超過30秒。PHP啓動腳本,它超時
在下一次超時之前啓動PHP腳本的最佳方式是什麼? 我在考慮將上次抓取的網址保存在文件中,但還有其他選項嗎?
編輯: ScallioXTX是正確的,你不能使用變量作爲goto
標籤。你可以用一個非常大的if
聲明來解決這個問題,但是在這一點上,我認爲最好不要使用goto
。這是一種替代方法:
<?php
// Load label number from database or text file into $label_num
if($label_num <= 1) {
// Do stuff
}
if($label_num <= 2) {
// Do more stuff
}
// ...
?>
老(不正確)方法:
當然你也可以使用goto
:http://us1.php.net/goto
,直到你得到更好的我只會用這個作爲一種臨時措施託管。
這裏是我會做什麼:(前count1:
,count2:
等)
舉例:
<?php
// Load label number from database or text file into $label_num
if($label_num) {
goto $label_num;
}
count1:
// Do stuff
count2:
// Do more stuff
// ...
?>
-1您無法'轉到'一個變量名稱,這會給出解析錯誤(請參閱[文檔]中的Gmail dot com的Ray dot Paseur的註釋(http://php.net/manual/en/control- structures.goto.php)) – rpkamp
謝謝,我會看看如果我能以某種方式使用它,這有點棘手! :) – user2019515
由於您正在構建Web爬網程序,因此請考慮將當前已爬網的URL存儲在某處,然後如果爬網程序崩潰,則可以從此特定URL恢復。 –
的確,問題在於腳本經常超時,纔有機會抓取一個頁面。 – user2019515
如果您在超時後保存上次抓取的網址以恢復履歷,請務必跳過並重新安排失敗的網址。否則,您可能會在破損的頁面上出現無限循環。 –