2011-11-04 96 views
-5

我通過輸入此命令添加了一個cronjob - crontab -e。我在該文件中添加了以下任務 -cron選項卡不工作php

*/5 * * * * /var/www/web/vendors/shells/aggregated_deals.php 
*/5 * * * * /var/www/web/vendors/shells/deals.php 

這些是php腳本。之後,我重新啓動了Apache服務器,但這些腳本沒有執行。系統日誌日誌文件爲空。 請幫我運行這個cron。

+3

你有沒有嘗試自己manualy在瀏覽器中運行?你有沒有嘗試使用php運行命令行? –

+0

它是cake1.3還是2.0?看起來像1.3我 – mark

+0

它是蛋糕1.3。 – Abhimanyu

回答

1

我不認爲你可以通過調用它這樣執行PHP文件,我總是用捲曲:

*/5 * * * * curl http://domain.com/page 

或者我想你可以使用php命令本身,如果你不運行它噸要使用Web服務器:

*/5 * * * * php /var/www/web/vendors/shells/aggregated_deals.php 

無論你在crontab規則星型後會是什麼命令執行對系統。如果你在終端上運行命令「/var/www/web/vendors/shells/aggregated_deals.php」,我肯定沒有任何事情發生......你需要把它作爲一個PHP腳本來調用。

+2

'curl'可以工作,但是你可以用這種迂迴網絡調用來運行腳本超時(CLI調用默認情況下沒有時間限制,IIRC) – Piskvor

+0

@Piskvor:很高興知道,謝謝。我即將趕快把我的服務器上的所有這些改爲使用CLI :) – Clive

+0

YW - 這就是我發現用'wget'調用的看家本地腳本在60秒時超時後:) – Piskvor

0

爲什麼不用正確的用戶調用php-cli?

*/5 * * * * www-data php /var/www/web/vendors/shells/aggregated_deals.php

OR

*/5 * * * * root /usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php

或者類似的東西。 你已經安裝了php-cli嗎?

+0

如果xe使用'crontab -e'作爲普通用戶,則xe應該編輯該用戶的每個用戶的crontab文件;沒有必要在那裏指定用戶。 – Piskvor

+0

Oups!謝謝 ! –

2

我不認爲會自行運行 - 你需要使用PHP解釋器來運行腳本,就像這樣:

/usr/bin/php /var/www/web/vendors/shells/aggregated_deals.php 

請注意,您的安裝可能有php別處 - 使用命令which php上命令行來找出位置。

+0

現在我通過添加/ usr/bin/php來編輯我的crontab,但仍然沒有執行這兩個文件 – Abhimanyu

0

首先,您需要確保您有PHP CLI可用。你可以這樣做:

$ php -v 

如果你看到一些理智的輸出,那麼PHP CLI是可用的。否則,你需要安裝它。安裝取決於您使用的發行版。

第二,如果你想直接運行CLI腳本,你需要讓他們可執行:

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php 
$ chmod +x /var/www/web/vendors/shells/deals.php 

三,PHP CLI腳本不相關的Apache和你不需要重新啓動它,使CLI腳本工作。

+0

以上所有都很好-still腳本沒有運行 – Abhimanyu

0

您需要告訴服務器使用PHP執行文件。是否所有的stesps在Elnurs答案描述,並在cron把這些作爲你的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

如果不工作,你可能需要包括對PHP的完整路徑。 我也剛剛添加了一些行來使腳本記錄任何輸出。

+0

謝謝,現在cron正在運行,但出現此錯誤' PHP致命錯誤:Class'Shell'在第3行的/var/www/web/vendors/shells/deals.php中找不到。它與鏈接問題有關嗎? – Abhimanyu

+2

在這種情況下,我修復了您的cron問題,您需要修復PHP腳本。 – Dunhamzzz

0

你需要運行它的蛋糕風格...你一定會是

cake aggregated_deals > /tmp/my.log 
cake deals > /tmp/my.log 2>&1 

這個蛋糕是你夾餅,你應該從你的應用程序文件夾中運行它運行

cake shellName shellParam 

我你的情況,並...我不知道如何從cron做到這一點,但是這是你有錯...

這asuming這些腳本是有效cakeShells

0

你需要告訴服務器用PHP執行文件。是否所有的stesps在Elnurs答案描述,並在cron把這些作爲你的行:

*/5 * * * * php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

$ chmod +x /var/www/web/vendors/shells/aggregated_deals.php 
$ chmod +x /var/www/web/vendors/shells/deals.php 
0

我知道這是發佈後很長一段時間,但它看起來像我不是唯一的一個。

反正我的建議是將路徑添加到PHP中的cron線:

*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/aggregated_deals.php > /tmp/my.log 2>&1 
*/5 * * * * /usr/bin/php -f /var/www/web/vendors/shells/deals.php > /tmp/my.log 2>&1 

再次確認權限都不錯