开发者

Using cron manager from within PHP

开发者 https://www.devze.com 2022-12-29 21:20 出处:网络
I am wanting to add a section in my php application to add / remove scheduled tasks. Something similar to what they use in vBulletin Forum.

I am wanting to add a section in my php application to add / remove scheduled tasks.

Something similar to what they use in vBulletin Forum.

Does anyone have any ideas what they use? Are they using cron jobs or do they have something custom done.

Can anyone guide me on how I can accomplish something similar to that, basically I just want my script to add or remove cron jobs / scheduled task.

I don't want to use, for example the cPanel Cron interface, I would like to accomplish this from within my script.

Any help is grea开发者_如何学Gotly appreciated.


If you don't have the exec() function enabled, you have to rely on manually setting at least one cron job via some interface and then managing individual jobs in your script.

What I do for example is this

  1. I have a script heartbeat.php which is executed every minute
  2. This script checks a MySQL table crontab and checks if there is any row (job) with time_to_process <= NOW()
  3. If there is, it loads the class defined for the specific row from crontab table
  4. The class implements an interface with run() method and I only call $cronJob->run() to make it run
  5. The class then handles it's rescheduling via crontab table once it finishes

A good example is to reset daily views on some items. The job is scheduled at May 1, 2010 00:00. Once the job ran, it schedules itself for the next day automatically.
You can then implement automatic reset of failed jobs and many other features from within PHP.


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

is a php class that lets you access a crontab from PHP using a class.


I believe vBulletin "fakes" cron jobs. Any user which accesses the page executes code which checks to see if any tasks need to be run.

If however, no users visit the website, none of the cron jobs will execute, the method is 100% reliant on page views.

Also, to prevent delayed page rendering on users who execute the cron jobs they are executed after the page has been rendered.

Again, this is just what I think is happening, I haven't looked at the code myself.

Hope this helps.


Here is my solution :-)

Sample from command line:

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

Click for more: php-crontab-manager


Here's a PHP crontab class:

http://www.kavoir.com/2011/10/php-crontab-class-to-add-and-remove-cron-jobs.html

Use the methods to add, edit or remove cron jobs.


I was once on a shared hosting once, where I could setup just 1 cron job that would run a PHP script (no idea why they did that), but since I had to do quite a lot of stuff, I came up with this library https://github.com/Simbiat/Cron, which stores your tasks in a database and runs respective PHP code, that you assign to each type of a task.
Even though now I am on VPS and do have proper access to cron, I am still using it.

0

精彩评论

暂无评论...
验证码 换一张
取 消