Jobqueue package for FuelPHP.
- PHP 5.3.3+
- symfony/Process 2.3
- pda/pheanstalk
- beanstalkd
Add required package to your composer.json
.
...
"require": {
...
"hosopy/fuel-jobqueue": "dev-master",
...
},
...
And run composer installer.
$ php composer.phar install
Download zip archive or clone this repository, and extract to fuel/app/packages/fuel-jobqueue
.
'always_load' => array(
'packages' => array(
'fuel-jobqueue',
...
Copy default configuration file to your app/config directory.
$ cp fuel/packages/fuel-jobqueue/config/jobqueue.php fuel/app/config
If you want to run beanstalkd in other machine or port, edit configuration.
For the moment, keep default configuration.
return array(
// default connection name
'default' => 'default_connection',
'connections' => array(
'default_connection' => array(
'driver' => 'beanstalkd',
'host' => '127.0.0.1',
'port' => '11300',
'queue' => 'jobqueue',
),
),
);
Currently, fuel-jobqueue uses beanstalkd as a backend of queueing.
If beanstalkd is not installed in your machine, install it first.
# Example: homebrew (Mac)
$ brew install beanstalkd
$ beanstalkd
# Example: Ubuntu
$ sudo apt-get install beanstalkd
If you want to know about beanstalkd more, see .
Define your job handler class in fuel/app/classes/myjob.php
.
<?php
class Myjob
{
// [IMPORTANT] Requires 'fire' method as a entry point.
public function fire($job, $data)
{
// heavy job
sleep(10);
}
}
In your controller, call \Jobqueue\Queue::push($job, $data)
to push a new job.
class Controller_Welcome extends Controller
{
public function action_index()
{
// push a new job onto the default queue of the default connection.
// 'Myjob' is a class name you have defined.
\Jobqueue\Queue::push('Myjob', array('message' => 'Hello World!'));
return Response::forge(View::forge('welcome/index'));
}
...
Queued jobs cannot be executed untill the worker process pop it from the queue.
$ cd FUEL_ROOT
$ php oil refine jqworker:listen --connection=default_connection --queue=jobqueue
Now, we are ready for queueing!
Execute your controller action.
Sorry under construction...
Sorry under construction...
Sorry under construction...
Sorry under construction...