An open API service indexing awesome lists of open source software.

https://github.com/appleboy/codeigniter-gearman-library

Gearman library for CodeIgniter PHP Framework
https://github.com/appleboy/codeigniter-gearman-library

Last synced: 9 months ago
JSON representation

Gearman library for CodeIgniter PHP Framework

Awesome Lists containing this project

README

          

#Codeigniter Gearman Library

This is a library to use gearman within codeigniter. The original source was pulled from Sunil here https://github.com/sunils34/codeigniter-gearman-library. I add some feature and remove deprecated function.

Please make sure you have setuped gearman daemon environment and gearman pecl drivers. (http://pecl.php.net/package/gearman).

##Set up gearman environment

For Ubuntu/Debian OS (apt-get install):

install gearman server

```
$ aptitude -y install gearman gearman-job-server libgearman-dev libdrizzle0
```

install gearman extension

```
$ pecl install channel://pecl.php.net/gearman-1.1.2
```

## Installation

You can install via http://getsparks.org/packages/codeigniter-gearman/show

```
$ php tools/spark install -v1.0.2 codeigniter-gearman
```

or manual install

```
$ cp config/gearman.php your_application/config/
$ cp libraries/lib_gearman.php your_application/libraries/
```

## Usage

load library from spark:

```
$this->load->spark('codeigniter-gearman/1.0.2');
```

or load library from manual install:

```
$this->load->library('lib_gearman');
```

### Client Example

Please refer: `example/cli.php`

public function client()
{
$this->lib_gearman->gearman_client();

$emailData = array(
'name' => 'web',
'email' => 'member@example.com',
);
$imageData = array(
'image' => '/var/www/pub/image/test.png',
);

$this->lib_gearman->do_job_background('sendEmail', serialize($emailData));
echo "Email sending is done.\n";
$this->lib_gearman->do_job_background('resizeImage', serialize($imageData));
echo "Image resizing is done.\n";
}

### Worker example

public function worker()
{
$worker = $this->lib_gearman->gearman_worker();

$this->lib_gearman->add_worker_function('sendEmail', 'Cli::doSendEmail');
$this->lib_gearman->add_worker_function('resizeImage', 'Cli::doResizeImage');

while ($this->lib_gearman->work()) {
if (!$worker->returnCode()) {
echo "worker done successfully \n";
}
if ($worker->returnCode() != GEARMAN_SUCCESS) {
echo "return_code: " . $this->lib_gearman->current('worker')->returnCode() . "\n";
break;
}
}
}

### Define job function

public static function doSendEmail($job)
{
$data = unserialize($job->workload());
print_r($data);
sleep(2);
echo "Email sending is done really.\n\n";
}

public static function doResizeImage($job)
{
$data = unserialize($job->workload());
print_r($data);
sleep(2);
echo "Image resizing is really done.\n\n";
}

### Run Test

run worker:

```
$ php app/index.php cli worker
```

run client:

```
$ php app/index.php cli client
$ php app/index.php cli client
$ php app/index.php cli client
....
```