barracudanetworks / jobrunner
A library to create and run jobs in PHP.
Installs: 19 344
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 10
Forks: 4
Open Issues: 0
Requires
- php: >=5.3.0
- barracudanetworks/forkdaemon-php: ^2.0.0
- psr/log: ^1.0.0
Requires (Dev)
- codeclimate/php-test-reporter: ^0.4.0
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-12-07 05:12:16 UTC
README
A library to make runnable jobs with PHP easy. The library also supports creating jobs that have children backed by our PHP Fork Daemon.
Usage
Create your jobs by extending Job
, or the special ForkingJob
class for work that will utilize forking children.
Instantiate JobRunner
, and add your jobs using the addJob(JobDefinition $definition)
method. Then execute the run()
method in a loop to daemonize the process.
Try the example in the examples
folder by running php examples/jobrunner.php
.
Setting options
new JobDefinition()
accepts 5 parameters: First, a required job class name (e.g.Vendor\Package\Job::class
or'Vendor\Package\Job'
). The next 4 are optional:enabled
may be set to"false"
to disable the job. By default, it is set to "true".run_time
may be set to a time at which a job should be run (e.g."11:30"
).interval
may be set to an interval (in seconds) on which the job should run (e.g.3600
to run every hour).max_run_time
may be set (in seconds) for preventing a job to run longer than a certain time (e.g.86400
to stop running after a day)
JobRunner->addJob()
accepts one parameter: The previously definedJobDefinition
- To set the number of child workers in a forking job, and the number of work units they should process, override
__construct
inForkingJob
to set your own settings:$this->setNumChildren(int)
sets the max number of children your job can have.$this->setItemCount(int)
sets the amount of work each child should do. Seeexamples/ForkingComplimenter.php
for an example.- Note: You should still call
parent::__construct($logger)
before using the above methods.
Caveats
- You need to specify
declare(ticks=1);
before inclusion of the fork-daemon library, otherwise signals wont be handled. This must be done in the main PHP file, asdeclare(ticks=N);
only works for the file, and files included by the file, in which it is declared in. Reference: PHP Documentation - OSX and Windows are unsupported.
License
Copyright 2015 Barracuda Networks, Inc. Licensed under the MIT License