2015-10-13 110 views
0

我想在我的服務器上每五分鐘執行一次php腳本,它是一個單獨運行良好的php腳本,自從我的瀏覽器以來,我嘗試使用「php -f php_file.php」進行控制檯操作。但我需要每天自動執行它。我正在谷歌搜索,並在這裏,但任何解決方案爲我工作:我怎樣才能讓cron執行一個php腳本?

首先我編輯我的crontab,我也重新啓動cron,以確保它已正確更新。

*/5 * * * * /usr/bin/php /var/www/myscript.php 

,我嘗試了以下太:

*/5 * * * * /usr/bin/php -f /var/www/myscript.php 

我所做的可執行腳本也檢查我的系統日誌(在那裏我可以看到我的cron被正確執行,但不執行PHP腳本),我也嘗試將cron的輸出重定向到一個文件,但它將文件留空。 任何人都可以幫助我?

致以問候

+0

「我可以看到我的cron執行正確,但它不執行php腳本」 - 你得到了什麼輸出?是什麼讓你認爲cron正在運行,但沒有運行PHP腳本? 「我也嘗試將cron的輸出重定向到一個文件」 - 如何? – Quentin

回答

1

您的腳本是可執行文件,正處於正確的軌道上。

#!/usr/bin/php 
<?php 
// here goes your script 

如果腳本執行由這樣

$ ./script.php 
運行它,你可以測試:

如果需要

$ chmod +x script.php 

這個添加到文件的最頂部再來一次

設置你的cron下面的工作來設置一些日誌記錄,但確保你輸出一些東西om您的腳本,請使用printecho和相關消息。

*/5 * * * * /var/www/script.php >> /var/www/script.log 2>&1 

我們將標準輸出和錯誤重定向到script.log文件中。

每5分鐘檢查一次活動。


更新:

試試這個在您的PHP腳本

$file = '/var/www/script.txt'; 
for($i=0;$i<9;$i++){ 
    $entry = date("Y-m-d H:i:s") . " " . $i . PHP_EOL; 
    echo $entry; // this should write to the log file 

    file_put_contents($file, $entry, FILE_APPEND | LOCK_EX); 
    // and this should write to the script.txt file 
} 

基本上我們給的完整路徑文件和傳遞FILE_APPEND標誌,所以我們不會每次都重寫。

運行該腳本並檢查文件是否已創建,默認行爲是創建該文件(如果該文件不存在)。

+0

我添加了一個打印和是它顯示它,但在我的PHP腳本,我需要打開並寫入一個文件。我正在使用以下代碼測試它: 但是cron作業未創建該文件,感謝回覆我 –

+0

無法看到相關的代碼,更好地編輯您的問題並將其包括在其中而不是評論中的這裏。 –

+0

是的,對不起,我按了輸入錯誤 –

相關問題