2010-04-19 77 views
0

有沒有辦法在cron中每十分鐘或在預定時間運行腳本來添加一個php腳本(文件)?在cron中添加php腳本以執行來自php的計劃任務?

因爲我希望用戶能夠安排何時發送通訊到他選擇的很多電子郵件。

所以我必須從PHP創建一個cron作業來在該預定時間運行一個php文件。

,如果你有一個共享的網絡託管環境(不VPS)

回答

2

如果腳本文件名是news.php和/home/user/news.php 的crontab線好像是這是可能的:

* * * * * php /home/user/news.php 

如果你不想每分鐘運行一次。 您可以編輯*與左(M,H,DOM,星期一,DOW)

但是,如果只有你有相同的虛擬主機,你不能做到這一點, 你必須能夠訪問外殼或其他方法來配置 您crobtab文件(可能從您的提供商接入面板)

但是你可以在其他服務器上運行的crontab工作由Apache over HTTP協議來運行你的news.php。在此選項中,遠程服務器上的crontab作業必須通過網絡運行腳本。例如。 wget的是一個很好的選擇,因爲它:

* * * * * wget http://www.yourdomain.com/dir/news.php 
+0

偉大的解決方案! – 2010-04-19 13:45:18

+0

那麼我的解決方案是不被接受?;-) – Svisstack 2010-04-19 14:04:39

1

我的建議是允許Apache的調用來改變的cron的PHP腳本。這是災難寫的。通常cron被設置爲需要root權限。這是可以改變的,但重點是如果你的網站被黑客入侵,給攻擊者修改你的cron的能力可能會非常糟糕。

更重要的是,它不是必需的。你所要做的就是選擇一些粒度,比如說每分鐘或5分鐘或10分鐘。你對用戶說,他們可以把它安排到這個級別。給他們一些從每個月到每5分鐘的選項。無論他們選擇什麼,將其寫入數據庫。

然後每1,5或10分鐘運行一次不同的PHP腳本(無論最小粒度是多少),並讓它查看數據庫以查看是否有任何要運行,執行或發送的內容。

+0

你可以編輯crontable由用戶,但每個用戶有獨立的自我crontable。 – Svisstack 2010-04-19 10:47:38

+0

@Swisstack是的,但這是您的整個Web應用程序的一個用戶(通常是Linux上的「nobody」)。 – cletus 2010-04-19 11:15:23

1

是這是可能的,但在共享主機上它會影響你的以及該主機上的其他網站。

因此,如果你的文件沒有經常被cron調用,那麼可以把cron放在共享主機上,但是如果你必須經常調用它,那麼這是不可取的,你也可以由你的提供者拋出,因爲沒有人因爲其他網站而希望有不足之處的網站。