Skip to content

gitkv/laravel-gearman-rpc

Repository files navigation

Laravel Gearman rpc

Build Status

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"
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']));

About

Laravel/Lumen Gearman rpc. Based on https://github.com/mhlavac/gearman

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages