2011-08-18 52 views
0

我必須在PHP上每週運行一次相當繁重的任務(腳本捲曲到各個位置(網站,API),收集,排序數據並將其插入到數據庫中)。整個腳本需要大約10到15分鐘才能在我的mac(localhost)上運行 - 猜測它會在服務器上運行得更快。儘管如此,我目前正在使用AJAX進行循環,因此當每個任務完成時,下一個任務將啓動。現在我需要每週自動運行它。所以我認爲我不能用AJAX做到這一點。重CRON任務

我必須設置php.ini才能讓腳本運行30分鐘或者有更好的方法來執行它嗎?

回答

1

PHP腳本的maximum execution time由其中已產生輸出的時間量來確定。因此,將數據寫入STDOUT(例如寫入日誌文件)將使腳本繼續運行。但是,如果您從命令行運行腳本,則無論如何max-execution-time默認爲零,並且如前所述,我會使用cronjob而不是AJAX-Request來啓動腳本,或者類似的方法。實際上,我爲大多數執行管理任務的php腳本執行此操作,例如跨多個數據庫或類似目的同步數據。

+0

好吧,所以不管PHP文件執行需要多長時間,通過cron運行它都不會遇到任何錯誤。正確嗎? – Norris

+0

正確 - 如果您的軟件包維護人員沒有通過設置限制(最大執行時間> 0)沒有進行限制,您仍然應該檢查php.ini文件。另外,請記住,在linux系統上,不同的php.ini文件適用於不同的環境,例如apache2與CLI(命令行界面)不同。還有一件事:對於日誌文件,我特指將它寫入像'php myscript.php>/var/log/myscript.log'這樣的管道。 – Lars

1

php.ini與調度作業無關。它只是定義PHP的啓動設置。正如你的標題所說,你想要的是一個cron工作。

對於OSX的cron設置,見http://hintsforums.macworld.com/showthread.php?s=&threadid=39005

+0

是的,但我可能會得到一個PHP運行時錯誤,因爲它需要這麼長時間,或者我錯了嗎? – Norris

+0

您不應該使用類似於來自twitter的流數據。它運行幾個小時,我不記得需要更改任何設置。 – Caimen

+3

命令行PHP通常默認爲沒有時間限制,並且這是cron作業運行的環境。 –