PHP Class to handle concurrent running Jobs to utilize the power of multiple cores
After some search I was not able to find a php-queue alike class. This code was inspired by php-resque
- PHP 5.3+
- php-pctnl
- Composer
The easiest way to work with php-queue is when it's installed as a Composer package inside your project. Composer isn't strictly required, but makes life a lot easier.
If you're not familiar with Composer, please see http://getcomposer.org/.
- Add php-queue to your application's composer.json.
{
// ...
"require": {
"jesusch/php-queue": "*"
},
// ...
}
-
Run
composer install
. -
If you haven't already, add the Composer autoload to your project's initialization file. (example)
require 'vendor/autoload.php';
Jobs are queued as follows:
$queue = new \JobQueue\Queue();
$queue->setMaxProcs(10);
$job = new \JobQueue\Job();
$queue->appendJob($job);
$queue->waitForJobs();
Each job should be in its own class, must extend \JobQueue\AbstractJob
and include a public run
method.
class My_Job extends \JobQueue\AbstractJob
{
public function run()
{
// Work work work
echo 'some fancy job';
$sleep = rand(1,5);
sleep($sleep);
}
}