2017 © Pedro Peláez
 

library gearman

Gearman Worker / Dispatcher Implementation

image

dmank/gearman

Gearman Worker / Dispatcher Implementation

  • Thursday, August 31, 2017
  • by dominik.mank
  • Repository
  • 2 Watchers
  • 3 Stars
  • 5,935 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 12 Versions
  • 3 % Grown

The README.md

Build Status Minimum PHP Version Latest Stable Version Scrutinizer Code Quality, (*1)

Installation

Über Composer, (*2)

    composer require dmank/gearman:@stable
    {
        "require": {
            "dmank/gearman": "@stable"
        }
    }

Benutzung

Client

Beispiel Benutzung des Clients, (*3)

<?php
require_once __DIR__.'/../vendor/autoload.php';

// we can multiple servers due the collection
$serverCollection = new \dmank\gearman\ServerCollection();
// adding a local gearman connection
$server = new \dmank\gearman\Server();
$serverCollection->add($server);
//tada , we can use the client!
$client = new \dmank\gearman\Client($serverCollection);

Asynchrone Abarbeitung

Methode "executeInBackground", erwartet den Methodennamen der ausgeführt werden soll sowie den Workload. Als Rückgabe bekommt man das zugewiesene Jobhandle zurück um den Status überprüfen zu können., (*4)

Synchrone Abarbeitung

Methode "executeJob", erwartet Methodenname sowie Workload. Als Rückgabe bekommt man den Joboutput zurück. Hier kann dementsprechend kein Status abgefragt werden., (*5)

Jobstatus holen

Methode "getJobStatus", erwartet das JobHandle (string) als Übergabe Parameter. Gibt ein Objekt "JobStatus" zurück welches die Methoden "isCompleted, isRunning, isKnown" anbietet. Completed gilt der Job wenn er nicht mehr "isKnown" & "isRunning" ist. (Information von Gearman), (*6)

Worker

Der Worker selber läuft solange wie er kann, sollte diesem kein Verhalten über das Eventing mitgeteilt werden. Hier bietet sich zum Beispiel ein EventHandler an, der vor/nach jeder Funktionsausführung prüft wieviel RAM verbraucht wurde, und im Zweifel den Worker beendet. Ein weiteres Beispiel wäre eine maximale Zeit für den Worker einzustellen. Hier kann man zum Beispiel, wenn der Job zu lange im IDLE Modus ist, diesen beenden. Beispiel Worker, (*7)

<?php
require_once __DIR__.'/../vendor/autoload.php';

// we can multiple servers due the collection
$serverCollection = new \dmank\gearman\ServerCollection();
// adding a local gearman connection
$server = new \dmank\gearman\Server();
$serverCollection->add($server);

//no must have, but nice to have!
$log = new \Monolog\Logger('jobworker');
$streamHandler = new \Monolog\Handler\StreamHandler('php://output');
$streamHandler->setLevel(\Monolog\Logger::DEBUG);
$log->pushHandler($streamHandler);

$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
$eventDispatcher->addSubscriber(new \dmank\gearman\event\subscriber\Monolog($log));

$jobCollection = new \dmank\gearman\JobCollection();

$worker = new \dmank\gearman\Worker(
    $serverCollection,
    $jobCollection,
    $eventDispatcher
);

$worker->run();

Events

Der Worker stellt über Eventing folgende Events bereit: (In dieser Reihenfolge), (*8)

  • WorkerEvent::EVENT_BEFORE_RUN
  • ConnectToServerEvent::CONNECT_TO_SERVER_EVENT
  • ConnectToServerEvent::CONNECTED_TO_SERVER_EVENT
  • RegisterFunctionEvent::EVENT_ON_BEFORE_REGISTER_FUNCTIONS
  • RegisterFunctionEvent::EVENT_ON_AFTER_REGISTER_FUNCTIONS

Die folgenden werden Abfragenbedingt ausgeführt:, (*9)

Sollte Gearman ein IO_WAIT zurückliefern, (*10)

  • WorkerEvent::EVENT_ON_IO_WAIT

Bei NO_JOBS, (*11)

  • WorkerEvent::EVENT_ON_NO_JOBS

Bei ON_WORK, (*12)

  • WorkerEvent::EVENT_ON_WORK

Bei SUCCESS, (*13)

  • WorkerEvent::EVENT_AFTER_RUN

Jeder registrierten Funktion werden folgende Events hinzugefügt Vor Ausführung, (*14)

  • FunctionEvent::FUNCTION_BEFORE_EXECUTE

Nach erfolgreicher Ausführung, (*15)

  • FunctionEvent::FUNCTION_AFTER_EXECUTE

Im Fehlerfall, (*16)

  • FunctionFailureEvent::FUNCTION_ON_FAILURE

Mitgelieferte Eventsubscriber

Monolog

Am besten zum Debuggen oder um den Ablauf der Logik zu verfolgen. Der übergebene Logger wird auch an den eigentlichen Job weitergegeben sofern er "LoggerAware" ist., (*17)

MaxRunTime

Prüft vor Beginn und nach Ende einer Abarbeitung, sowie wenn keine Jobs vorhanden sind, ob die Maximallaufzeit des Workers erreich ist., (*18)

MemoryLimit

Prüft vor Beginn und nach Ender einer Abarbeitung ob die angegebene Grenze an Speicher aufgebraucht/überschritten ist. In dem Falle würde der Worker beendet werden., (*19)

The Versions

31/08 2017

dev-master

9999999-dev

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

31/08 2017

3.2.0

3.2.0.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

28/08 2017

3.1.1

3.1.1.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

28/08 2017

3.1.0

3.1.0.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

02/08 2017

3.0.0

3.0.0.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

24/07 2017

2.1.2

2.1.2.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

14/07 2017

2.1.1

2.1.1.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

27/04 2017

2.1.0

2.1.0.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

16/01 2017

2.0.0

2.0.0.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

22/10 2015

1.0.3

1.0.3.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

11/09 2015

1.0.2

1.0.2.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman

10/09 2015

1.0.1

1.0.1.0

Gearman Worker / Dispatcher Implementation

  Sources   Download

The Requires

 

The Development Requires

by Dominik Mank

php dispatcher worker gearman