gitkv / laravel-gearman-rpc
Laravel/Lumen Gearman rpc. Based from https://github.com/mhlavac/gearman
v0.1
2018-05-07 06:28 UTC
Requires
- php: >=7.1
- mhlavac/gearman: ~0.1
Requires (Dev)
- phpunit/phpunit: ^7
Suggests
- ext-gearman: PHP Gearman extension for running worker
This package is not auto-updated.
Last update: 2024-11-13 05:41:40 UTC
README
Laraval / Lumen Gearman Remote Procedure Call
Requires:
- Laravel / Lumen >=5.5
- PHP >= 7.1
- Gearman PHP extension
- Socket PHP extension
Installation
- Run:
composer require "gitkv/laravel-gearman-rpc"
- Install gearman job server as PHP-extension: http://gearman.org/getting-started/#gearman_php_extension
- Install supervisor:
apt-get install supervisor
Configuration
Laravel:
Add service provider to /config/app.php:
'providers' => [ gitkv\GearmanRpc\GearmanRpcServiceProvider::class ], 'aliases' => [ 'GearmanRpc' => gitkv\GearmanRpc\Facade\GearmanRpc::class, ],
Publish config/gearman-rpc.php
php artisan vendor:publish --provider="gitkv\GearmanRpc\GearmanRpcServiceProvider" --tag=config
Usage
Worker:
Create handler:
Create a file in the directory app\Rpc\MyRpcHandler.php
<?php namespace App\Rpc; use gitkv\GearmanRpc\HandlerContract; class MyRpcHandler implements HandlerContract { public function handle($payload) { return [ 'status' => 'success', 'payload' => $payload, ]; } }
Add your handler to the handlers
section in the config/gearman-rpc.php
file
'MyExampleFunction' => \App\Rpc\MyRpcHandler::class,
Configure supervisor
Example supervisor config
[program:app-rpc-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/app/artisan gearman-rpc autostart=true autorestart=true user = www numprocs=1 redirect_stderr=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
Client:
Synch call
<?php $result = GearmanRpc::doNormal('MyExampleFunction', json_encode(['test'=>'data']));
Asynch call
<?php GearmanRpc::doBackground('MyExampleFunction', json_encode(['test'=>'data']));