2014-10-02 68 views
1

對不起,如果這是一個愚蠢的問題,但實際上我不知道。如何編寫PHP cron腳本?

我寫這個應用程序來壓縮和移動文件從客戶端的PC到主PC。
它可以很好地用作網頁。這是沒有什麼指導,沒有規格文件。
因此,作爲命運的安排,它應該是這將通過調用

*****runScript.php

所以我不知道以何種順序執行將要或應該發生運行cron作業。

我使用了2個AJAX調用來調用腳本中的方法,但只是將該文件作爲腳本運行有點不同。

任何人都可以請指導我嗎?

例如有沒有一種主要的方法將被首先調用。 如果是這樣,那麼我可以從那裏引導腳本。

修訂

的答案是真正的幫助充分,但如何將PHP文件會受到影響? @ Ole Haugset提到我應該適應它,所以使用$_GET變量。這在例如if ($_GET["argument"]=='runScript'){}的腳本中已經完成。

所以追加runScript到腳本調用應該工作正常嗎?

例如* * * * * php /path/to/file/runScript.php runScript

+0

你有root權限(shell),並且你的系統是在linux上運行的嗎? – ThatMSG 2014-10-02 06:02:23

+0

即時通訊運行Windows,但腳本將部署在Linux的機器上。是的,根訪問將可用。 – morne 2014-10-02 06:04:23

+1

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/ – 2014-10-02 06:59:42

回答

4

運行PHP腳本作爲cron作業沒有任何問題。 您需要做的是將文件系統的完整路徑提供給腳本文件,並使用命令php告訴Linux運行該文件的程序。

例子:

*/5 * * * * php /var/www/vhosts/statistikk/cron/getLastArticleFromIntranet.cron.php >> /var/www/vhosts/statistikk/cron/LOG.txt 2> /dev/null 

該腳本將運行每5分鐘,一週中的每一天。無論PHP腳本回顯/打印出什麼,都將存儲到LOG.txt文件中,以便我可以監視腳本事件。

在將它放入cronjob之前,嘗試運行shell中的命令以確保其正常工作。

但是,你說你通常會用AJAX調用來調用這個腳本。這不可能用cronjob做。我假設你使用AJAX來傳遞腳本需要的一些$ _POST元素。所以你需要做的是調整腳本以允許參數,並將它們添加到crontab作業中,或者在運行之前製作一個不需要任何給定參數的腳本。

如果你要調整你的腳本支持參數,請在Stack Overflow上已經存在的有關添加參數,以作業的答案:

How to run a php url with parameters in cron tab

編輯:

我會就像從下面的答案中加入我的答案一樣。 要在Linux中編輯您的crontab作業,您只需使用命令crontab -e即可。

這是需要填寫的每個必需參數的描述。

*  *  * * *  command to be executed 
-  -  - - - 
|  |  | | | 
|  |  | | +----- day of week (0 - 6) (Sunday=0) 
|  |  | +------- month (1 - 12) 
|  |  +--------- day of  month (1 - 31) 
|  +----------- hour (0 - 23) 
+------------- min (0 - 59) 
+0

感謝您的幫助。想想我現在可能有一個想法如何做到這一點。希望我不會回來。 – morne 2014-10-02 07:04:33

2

在Linux添加一個cronjob做到這一點:

#crontab -e命令 如果VI是你的編輯器按我輸入文字和ESC鍵退出。使用:w保存您的更改並:q退出。 如果nano是您選擇的編輯器,則使用strg + o進行保存,str + x進行關閉。

反正此行添加到文件的死神:*/5 * * * * PHP runScript.php

它將被稱爲每隔5min。

* * * * * php /path/to/file/runScript.php 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ └──── Day of the week (0-7, Sunday is 0 or 7) 
│ │ │ └────── Month (1-12) 
│ │ └──────── Day (1-31) 
│ └────────── Hour (0-23) 
└──────────── Minute (0-59) 

這應該是它:)

2

用於從定時任務運行PHP腳本的常用方法是使用一個命令行程序,例如捲曲或wget的。例如,cron作業運行類似如下的命令:

curl http://*****.com/script.php 

n這個命令,捲曲檢索網頁,然後運行PHP腳本。

但是,有一種更好的方法可以從cron作業在您的網站上運行PHP腳本。您可以使用PHP命令行解釋器直接運行該腳本。這種方法同樣有效,通常速度更快。以下命令顯示瞭如何使用PHP命令行解釋器運行的腳本:

/usr/local/bin/php -q /home/username/public_html/script.php 

在這個例子中,PHP命令行解釋器運行script.php的文件。 -q選項啓用安靜模式,可防止顯示HTTP標頭。

根據PHP腳本中的代碼,它只能在從特定目錄調用時才能正確運行。例如,如果腳本使用相對路徑來包含文件,則只有在從正確的目錄調用它時纔會運行。以下命令顯示瞭如何從一個特定的目錄中調用PHP腳本:

cd /home/username/public_html/; /usr/local/bin/php -q script.php 

如果你的腳本需要特殊配置選項,您可以使用自定義php.ini文件。該-c選項,您可以使用自定義php.ini文件調用PHP script

/usr/local/bin/php -c /home/username/php.ini /home/username/public_html/script.php 

Click Here更瞭解Cron PHP Script與實例定義。