2010-12-16 22 views
13

我有一個從web服務運行並插入到數據庫的php腳本。與wget crontab - 爲什麼它運行兩次?

crontab -e命令

 
......other cron tasks above....... 
... 
.. 
.. 
# Run test script.php at 1610 
10 16 * * * /usr/bin/wget -q -O /home/username/my_cronjobs/logs/cron_adhoc http://localhost/project/script.php 

顯然,在16:10,這個腳本運行兩次! 16:10:01和16:25:02

是不是有什麼不對而且要用wget做? 還是我錯誤地設置了cron作業的時間表?

當我從瀏覽器中運行http://localhost/project/script.php,它將只運行一次..

任何有關這個問題的想法?

我測試過,沒有其他用戶運行相同的工作......我懷疑wget的工作方式。

由於我的腳本需要至少20分鐘才能完成,而無需發送迴應(它從webservicces中拉出大量數據並保存到數據庫)。懷疑缺省情況下會重試wget,導致此問題。

+0

明顯的問題是,您是否嘗試過在命令行上運行? – 2010-12-17 04:02:04

回答

5

我想我解決了我自己的問題。

我的PHP需要一些時間來加載,我猜wget重試或超時後,一些默認指定的時間。

我用的/ usr/bin中/ PHP

1

誰的用戶的crontab是這個?

檢查是否有其他用戶在不同的時間爲其設置cron作業並忘記了它。

+0

我只設置了一個,沒有其他用戶使用wget設置此作業 – flyclassic 2010-12-16 08:43:26

+0

是否有可能wget執行兩次,是否使用-mirror幫助? – flyclassic 2010-12-17 01:17:44

+0

這裏的答案是:http://stackoverflow.com/questions/134906/how-do-i-list-all-cron-jobs-for-all-users – dgig 2014-05-08 19:30:12

13

The wget docs給予900秒,或15分鐘的默認閱讀超時解決了這個問題。

如果,在下載任何一點,收到超過 指定的秒數沒有數據,讀取失敗,在下載 重啓

這就是爲什麼你看到文件在15分鐘後再次調用。您可以通過添加參數和適當的秒數來指定更長的讀取超時時間:

--read-timeout=1800