Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




July 11, 2006
使用 Wget 定時執行遠端的網站程式

隨著網站程式 (如 ASP、JSP、PHP、Perl...) 的應用愈來愈多,有些程式必須定時執行。而網站程式並不像一般應用程式可以輕鬆的定時執行。

Wget 原本是設計來透過 HTTP、HTTPS、FTP 等網路協定來抓取檔案的,Linux 大部份也都有內建這個套件。如果在 Linux 下拿來搭配 crontab 就能達到定時執行某個網站程式的功能,也不用額外安裝任何的程式。

*/5 * * * * wget -qO - http://{SERVER NAME}/refresh.php
(crontab 範例,每5分鐘執行一次)

這個參數會讓 Wget 把抓取下來的檔案顯示在螢幕上,而不會寫入到檔案。只是要注意一下安全性的問題,不要讓阿貓阿狗都能執行。

(2006.07.14 補充說明)
如果程式需要做參數傳遞的話,使用 Querystring (Form GET) 時在記得在網址頭尾加上單引號,因為 & 符號是 Linux 背景執行用的保留字。另外 Wget 也有提供 POST 字串傳值跟 POST 檔案二種方式,可以參考一下:

--post-data=STRING use the POST method; send STRING as the data.
--post-file=FILE use the POST method; send contents of FILE.

註: Wegt 也有編譯好的 Windows 版本可以自行搭配使用。

延伸閱讀:
Wget 參數說明 (中文)
鳥哥: ctrontab 的設定方式

 
由 Neo 發表於 July 11, 2006 03:07 PM 收進你的MyShare個人書籤  

如果在第5分鍾抓100個IP,是同時開100支wget呢
或者是第一個IP抓完,換第2個IP呢?
*/5 * * * * wget -qO - http://220.134.71.1
*/5 * * * * wget -qO - http://220.134.71.2
....
*/5 * * * * wget -qO - http://220.134.71.100
請解答


yesYouDo 發表於 July 12, 2006 12:25 PM

前者可能會先受限於自己的頻寬不夠, 反而拖慢速度, 後者 wget 有參數(如果我沒記錯的話應該是 -i )可以配合一個 anyname.txt 純文字檔案, 依照檔案內部寫入的 URL 順序執行任務.


randy 發表於 July 13, 2006 05:43 AM

如果在第5分鍾抓100個IP,是同時開100支wget呢
或者是第一個IP抓完,換第2個IP呢?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
路過吐個嘈
這問題沒前沒後的,看都看不懂,大家要怎麼回答呢??
第5分鍾抓100個IP?? what the hell was that?


axis 發表於 July 13, 2006 09:20 AM

在crontab檔寫了以下的設定
*/5 * * * * wget -qO - http://220.134.71.1
*/5 * * * * wget -qO - http://220.134.71.2
....
*/5 * * * * wget -qO - http://220.134.71.100
假設wget抓一個IP花約5秒,那麼
請問在第5分鍾時是同時100個ip一起抓呢或是
5:00:00抓第一個IP
5:05:00抓第二個IP
.....以此類推


yesYouDo 發表於 July 13, 2006 08:45 PM

印象中 cron 會排序執行,不會同步,也就是一個抓完才換下一個。嗯,印象中.....


jiichen 發表於 July 14, 2006 01:11 AM

我印象中, 記得 wget 只有抓取遠端檔案的用途, 並沒有辦法執行遠端(或者應該是說觸發)特定檔案或程式的用途. 嗯! 印象中 ......... XD


randy 發表於 July 14, 2006 12:25 PM

yesYouDo:
如果你希望同時執行的話,可以試試 wget 的 -b 參數。(在 Linux 下可以背景執行,但不適用Windows)

randy:
抓取網站程式檔案就是一種觸發的方式喔。^^


Neo 發表於 July 14, 2006 07:17 PM

NEO大開頭就說過.Wget 原本是設計來透過 HTTP、HTTPS、FTP 等網路協定來抓取檔案的.
只是被我們取巧.剛好轉來當成WEB界面AP的觸發程式.如.你要定時去抓取某些網頁資料回來分析.就可以用這方法.

不過.後來我們直接改用PHP當SHELL.然後再用crontab去定時執行.效果也不錯.


sharbui 發表於 July 26, 2006 08:44 AM

正好有個問題可以用這個方法解決,真是謝謝 neo 大


Kirin 發表於 September 7, 2006 03:50 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.