2013-04-18 42 views
0

好吧,我有一個Web服務器和一個使用PHP的網站。我的問題是如何觸發PHP文件定期運行(例如每5分鐘)?定期觸發php文件 - 沒有cronjobs?

不幸的是我的虛擬主機提供商似乎不支持cronjobs,但是肯定對於沒有cron訪問權限的人來說肯定會有一些選擇嗎?

+0

如果你有web服務器(沒有共享主機),那麼你可以使用任何其他調度程序而不是crontab –

+0

其「虛擬專用服務器」我相信 –

+0

你的服務器是哪個OS? –

回答

1

根據您可能想如何鬆散執行這些5分鐘,如果你有定期的網站的點擊量(至少1個請求,每分鐘一次),你可以考慮:

    對每個請求檢查
  • 當作業運行最後一次
  • 如果是超過5分鐘前​​的數據庫,運行作業和更新數據庫

這個腳本運行的越多,更準確的5張分鐘就會。要增加此腳本運行的時間:

  • 查看是否有某個文件包含在每個請求中,如config.php。
  • 或者,也許你有一些路由,例如,所有的請求都通過index.php文件
1

您可以通過後臺程序腳本在PHP中做到這一點。

您可以創建一個守護進程並運行它。在那裏存儲時間,並且每次都看到時差。如果時間差異達到5分鐘,則可以調用其他腳本並重置時序變量 - 反之亦然。

2

根據你的要求,沒有你不能沒有cronjob做到這一點。如今,如果您無法訪問cron工具,只需切換主機即可。

另一種方法是,當用戶訪問您的網站時,您的操作實際上會由您的用戶觸發,也就是說,如果您確信每分鐘都會觸發您的網站,則可以使用數據庫跟蹤您的「cron作業「,所以當用戶訪問網站時,你會檢查cron是否在最近5分鐘內運行過,如果是,你什麼也不做,否則你運行cron並且當它存入數據庫時​​保存時間戳。每次用戶點擊您的網站時都會發生這種情況。

然而,這是窮人的cron,如果你的行爲需要分配時間,你不應該使用它,因爲你的用戶將不得不等待動作完成,所以如果需要時間,你的用戶將會離開網站。

編輯:如果是你說的專用服務器,你應該有權訪問shell,並從那裏你可以設置cron。

+0

他們給了我shell的訪問權限,但是編寫shell命令對我來說有點像外星人的概念。這是否意味着我實際上擁有cron訪問權限? –

+0

是的,你這樣做。 也許這可以幫助你:http://www.thegeekstuff.com/2011/07/cron-every-5-minutes/ – Twisted1919