2009-06-12 39 views
0

我有一個PHP腳本,需要在每個工作日的特定時間運行。是cron還是Windows任務調度程序執行此操作的唯一方法?
有沒有辦法從另一個PHP腳本中設置它?每天在特定時間執行PHP腳本有哪些選項?

+3

這正是cron所使用它的意義所在。 – rojoca 2009-06-12 01:41:16

回答

5

取決於時間的精確程度。我見過的一種技術(被稱爲「窮人的克朗」)是讓一個經常訪問的腳本(例如一個站點的主頁)在一定時間後在第一頁加載時觸發一個任務(保持跟蹤數據庫)。

如果您需要任何有保證的準確性,但cron或Windows計劃任務確實是最佳選擇。如果你的主機不支持它們,現在是時候獲得更好的了。

+1

我會說完全一樣的東西;沒有什麼比這更好的了。 +1 – 2009-06-12 01:37:48

1

克朗當然是迄今爲止在* nix上安排任何事情的最佳方式。

0

您可能想要使用cron(或windows計劃任務)。

如果你真的想要,你可以設置另一個PHP腳本連續運行一個無限循環(在循環中有一個睡眠命令,比如說30秒左右),然後當你達到你想要的日期/時間執行另一個腳本通過shell命令調用。儘管可能,但我不能認爲是否有一個很好的理由使用這種方法而不是使用cron /預定任務

0

你可以編寫一個長時間運行的腳本,在預定義的時間運行你的主腳本,但這將是非常不必要的,錯誤傾向於,它將基本上是「phph重寫」。

使用真正的cron本身會更容易和更強大的解決方案。如果您正在打包應用程序,則可以在/etc/cron.d中放置一個文件,其中包含運行應用程序的單個cron行。

2

除了cronScheduled Tasks,您可以讓您的PHP腳本始終運行它。進程應該睡眠(在循環內)直到時間到達。然後,該過程可以執行其餘的功能/方法。或者,您可以設置另一個腳本(它將作爲守護進程)來檢查時間並執行其他腳本。

0

您需要使用cron作業(Linux/Unix下)或Windows下的計劃任務。您可以可能有連續運行的另一個腳本,它會檢查時間並以指定的時間間隔執行腳本,但使用操作系統提供的機制更易於管理並且可以重新啓動等。

2

既然web是一種拉動機制,你必須有某種動作來觸發PHP腳本才能執行。 cron是Windows *上的* nix和任務調度程序的一個選項。你也可以編寫自己的服務,它有一個計時器,但只有在需要的時候,這在Windows服務更新,作業等方面很常見。

你可以這樣做的一種方法是在cron任務中調用每個php腳本行動需要。或者一個執行其他任務的php腳本。基於web的任務雖然如PHP的問題是超時。確保你的任務不到60-90秒。如果不是的話,你可能會考慮使用python,perl或ruby甚至是bash腳本來完成這項工作,而不是PHP腳本。

cron似乎是你最好的選擇。你將不得不用wget調用你的腳本。這裏有例子:http://www.thesitewizard.com/general/set-cron-job.shtml

例如這個運行在11腳本日常生活:

30 11 * * * /usr/bin/wget http://www.example.com/cron.php 
+2

PHP可以在命令行上運行,這將避免超時問題。 – ceejayoz 2009-06-12 01:44:28

1

如果這是一個遠程服務器,你不必,你可以設置的cron/Windows調度上的cron訪問您的計算機打開一個網頁瀏覽器到包含您希望運行的腳本的頁面

0

在cron不可接受的環境中,統一服務器項目在mimicking cron上有一些很好的建議。儘管如此,如果cron完全是一種選擇,那就使用它。

相關問題