2012-06-10 29 views
0

我正在寫一個腳本,可能需要半天時間,因爲它從一個網站的約14000個網頁獲取數據。請參閱在腳本中執行php腳本

要找出它是否取得進展,有沒有辦法通過mac os shell來觀察它的執行情況,即每個抓取頁面的傳出連接?

我使用curl來獲取頁面內容,如果有任何幫助的話。

非常感謝! Charles

編輯 該腳本是用PHP編寫的,並從localhost執行。

+0

嗯,這不會發生在瞄準...... http://www.bandliste.de/,不是嗎?我希望這個活動得到了你所做的這個網站的批准。 –

+0

@JaredFarrish謝謝你的幫助 – weltschmerz

+0

如果你運行了一個你有很多信息的網站,如果有人突然點擊它並試圖下載整個網站,你不知道它是誰或者他們是什麼取決於?或突然發現它複製到別的地方? –

回答

0

在編寫自定義腳本時,向標準輸出輸出某種狀態非常有幫助。

這可以在使用printfhttp://www.php.net/manual/en/function.sprintf.php

什麼您登錄到stdout取決於你所需要的信息看統一的方式來完成。也許對於curl請求,我會記錄Url,響應代碼,可能是開始時間和結束時間。它真的取決於你,只要確保你能確定它的狀態/進度。

printf('%40s | %5s', 'URL', 'Status Code'); 
printf('%40s | %5s', $the_url, $status_code); 
+0

謝謝 - 這是否會導致腳本花費相當多的時間來執行? – weltschmerz

+0

這會花費更長的時間,對於提供的信息的價值可能會有多長時間。問題是,如果你要抓取140,000個URL,那麼知道發生了什麼並且有一個日誌是很好的,但是將這個輸出保存到文件'> output.txt'中,或者檢查你的數據庫是否已經完成了鏈接有什麼進展順利和失敗的狀況是很好的。你也可以設置'curl_setopt($ session,CURLOPT_VERBOSE,true); //顯示與服務器的通信,但是我不知道這些信息對你是否有用。 – dm03514

+0

這個伎倆!謝謝! – weltschmerz

0

如果您是通過網絡瀏覽器運行此,輸出沒有看到,直到PHP已經執行完畢。但是,file_put_contents()可以將數據附加到日誌文件,您可以查看。

一行代碼示例如下:file_put_contents("file name.txt", "\nWebsite abc was successfully scraped", FILE_APPEND);。您必須擁有FILE_APPEND標誌,否則PHP每次只會覆蓋該文件。

php.net Reference

+0

@ScrottS非常感謝! – weltschmerz