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
- Host: GitHub
- URL: https://github.com/appleboy/codeigniter-gearman-library
- Owner: appleboy
- Created: 2013-09-29T06:05:03.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2013-12-13T08:37:28.000Z (about 12 years ago)
- Last Synced: 2025-04-10T08:31:58.113Z (9 months ago)
- Language: PHP
- Homepage:
- Size: 159 KB
- Stars: 18
- Watchers: 5
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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
....
```