2017 © Pedro Peláez
 

library gearman-saga

image

stephenwf/gearman-saga

  • Wednesday, September 7, 2016
  • by stephenwf
  • Repository
  • 1 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Gearman Saga

Usage:

// Create client.
$client = new GearmanSaga\GearmanSaga($gearmanClient);

// Add saga (most likely in a loop)
$client->addSaga(function() {

    $response = yield ['api_request', 'http://...' ];

    $model = yield ['mappings', $response ];

    $ok = yield ['add_to_database', $model ];

    if (!$ok) {
        yield ['rollback', $model];
    }
});

// Run the gearman process.
$client->run();

Forking into multiple sagas:


// Create client. $client = new GearmanSaga\GearmanSaga($gearmanClient); // Add initial task to get a collection of items. $client->addTask('get_list_of_somethings', [ 'page' => 0, 'per-page' => 100 ])->then(function(GearmanJob $job) { // Grab your data. $data = json_decode($job->data()); // Iterate and add a saga for each. foreach ($data->somethings as $something) { $client->addSaga(function() use ($something) { $model = yield ['mappings', $something ]; $model = yield ['create_indexes', $something ]; $ok = yield ['add_to_database', $model ]; if (!$ok) { yield ['rollback', $model]; } else { yield ['warm_cache', $model]; } }); } // Run them all in parallel. $client->run(); }); // Run the initial task. $client->run();

The Versions

07/09 2016

dev-master

9999999-dev

  Sources   Download

The Requires

 

by Stephen Fraser