2010-05-12 52 views
4

我想在我的php應用程序中添加一個部分來添加/刪除計劃任務。從PHP內使用cron manager

類似於他們在中使用的東西。vBulletin論壇

有沒有人有任何想法他們使用?他們使用cron作業還是他們有自定義的工作。

任何人都可以指導我如何完成類似的事情,基本上我只是想讓我的腳本添加或刪除cron作業/計劃任務。

我不想使用,例如cPanel Cron接口,我想從我的腳本中完成此操作。

任何幫助,非常感謝。

回答

12

如果您沒有啓用exec()功能,則必須依靠手動設置至少一個通過某個界面的cron作業,然後管理腳本中的各個作業。

我的例子做的是

  1. 我是執行每分鐘
  2. 此腳本檢查一個MySQL表crontab並檢查是否有任何行(工作)與time_to_process <= NOW()
  3. 腳本 heartbeat.php
  4. 如果存在,它會從crontab加載爲特定行定義的類
  5. 該類使用run()方法實現接口,我只能調用$cronJob->run(),使其運行
  6. 然後類處理它通過crontab表補賽一旦它完成

一個很好的例子是重置一些項目每天的意見。該作業定於2010年5月1日00:00。作業一旦運行,它會自動安排到第二天。
然後,您可以實現失敗作業的自動重置以及PHP中的許多其他功能。

+4

也被稱爲'窮人的克朗'。 – CodeJoust 2010-05-12 18:41:44

+0

非常感謝:)這幾乎是我所需要的,雖然我不想觸摸cron的cPanel界面,但我認爲最好的解決方案是做類似於你所說的東西;但是不要手動創建一個cron,而應該在用戶執行頁面請求時,從網站頁面中調用該cron-manger腳本。 我想我現在確信vBulletin不會使用cron的 - 因爲他們將不得不依賴exec(),它也被禁用在我的主機上,但vbulletin仍然可以使用這些調度程序的全部功能。 – Zubair1 2010-05-14 16:48:36

4

http://ryanfaerman.com/php-crontab-manager/

是一個PHP類,可以讓你使用一個類從PHP訪問的crontab。

+1

作爲鏈接的帖子裏說,cron的行爲可能會有所不同,從機器到機器。如果您的php腳本以用戶「apache」運行,那麼您必須確保允許用戶使用crontab,這涉及到查找cron.deny和cron.allow文件。 'man crontab'(如果你有shell的話)可以告訴你在哪裏可以找到這些文件以及它們是如何被解釋的......如果你打算在未知的環境中打包你的代碼以部署,你可能想'假冒它',就像進化的答案一樣。 – grossvogel 2010-05-12 14:43:22

+0

@grossvogel我使用了這個庫php-corntab-manager但是我收到了內部服務器錯誤,是否有任何其他方式可以從php腳本中調用啓動或停止cron作業 – Hunt 2012-07-02 19:54:43

+0

@CodeJoust,代碼的來源給404頁。 – Pacerier 2015-02-03 16:08:27

3

我相信vBulletin「假貨」cron工作。任何訪問頁面的用戶都會執行代碼來檢查是否需要運行任何任務。

但是,如果沒有用戶訪問該網站,則不會執行任何cron作業,該方法100%依賴於頁面查看。

此外,爲了防止執行cron作業的用戶延遲頁面呈現,他們在頁面呈現後執行。

再一次,這正是我所想的正在發生,我沒有看過自己的代碼。

希望這會有所幫助。

+0

如果它是100%依賴頁面瀏覽量,你總是可以安排一個cronjob每分鐘訪問該網站..... – Pacerier 2015-02-03 16:09:58

2

這裏是我的解決方案:-)命令行

樣品:

bin/cronman --enable /var/www/myproject/.cronfile --user www-data 

點擊查看更多:php-crontab-manager