Basic Gearman client and worker, submitting tasks

Beispiel #1 Basic Gearman client and worker, submitting tasks

In this example, the basic reverse client extended to run two tasks in parallel. The reverse worker is unchanged except to add sending of data back during processing.

<?php

# create the gearman client
$gmc= new GearmanClient();

# add the default server (localhost)
$gmc->addServer();

# register some callbacks
$gmc->setCreatedCallback("reverse_created");
$gmc->setDataCallback("reverse_data");
$gmc->setStatusCallback("reverse_status");
$gmc->setCompleteCallback("reverse_complete");
$gmc->setFailCallback("reverse_fail");

# set some arbitrary application data
$data['foo'] = 'bar';

# add two tasks
$task$gmc->addTask("reverse""foo"$data);
$task2$gmc->addTaskLow("reverse""bar"NULL);

# run the tasks in parallel (assuming multiple workers)
if (! $gmc->runTasks())
{
    echo 
"ERROR " $gmc->error() . "\n";
    exit;
}

echo 
"DONE\n";

function 
reverse_created($task)
{
    echo 
"CREATED: " $task->jobHandle() . "\n";
}

function 
reverse_status($task)
{
    echo 
"STATUS: " $task->jobHandle() . " - " $task->taskNumerator() . 
         
"/" $task->taskDenominator() . "\n";
}

function 
reverse_complete($task)
{
    echo 
"COMPLETE: " $task->jobHandle() . ", " $task->data() . "\n";
}

function 
reverse_fail($task)
{
    echo 
"FAILED: " $task->jobHandle() . "\n";
}

function 
reverse_data($task)
{
    echo 
"DATA: " $task->data() . "\n";
}

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse""reverse_fn");

print 
"Waiting for job...\n";
while(
$gmworker->work())
{
  if (
$gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo 
"return_code: " $gmworker->returnCode() . "\n";
    break;
  }
}

function 
reverse_fn($job)
{
  echo 
"Received job: " $job->handle() . "\n";

  
$workload $job->workload();
  
$workload_size $job->workloadSize();

  echo 
"Workload: $workload ($workload_size)\n";

  
# This status loop is not needed, just showing how it works
  
for ($x0$x $workload_size$x++)
  {
    echo 
"Sending status: " . ($x 1) . "/$workload_size complete\n";
    
$job->sendStatus($x+1$workload_size);
    
$job->sendData(substr($workload$x1));
    
sleep(1);
  }

  
$resultstrrev($workload);
  echo 
"Result: $result\n";

  
# Return what we want to send back to the client.
  
return $result;
}

# A much simpler and less verbose version of the above function would be:
function reverse_fn_fast($job)
{
  return 
strrev($job->workload());
}

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

% php reverse_worker.php
Starting
Waiting for job...
Received job: H:foo.local:45
Workload: foo (3)
1/3 complete
2/3 complete
3/3 complete
Result: oof
Received job: H:foo.local:44
Workload: bar (3)
1/3 complete
2/3 complete
3/3 complete
Result: rab
% php reverse_client_task.php
CREATED: H:foo.local:44
CREATED: H:foo.local:45
STATUS: H:foo.local:45 - 1/3
DATA: f
STATUS: H:foo.local:45 - 2/3
DATA: o
STATUS: H:foo.local:45 - 3/3
DATA: o
COMPLETE: H:foo.local:45, oof
STATUS: H:foo.local:44 - 1/3
DATA: b
STATUS: H:foo.local:44 - 2/3
DATA: a
STATUS: H:foo.local:44 - 3/3
DATA: r
COMPLETE: H:foo.local:44, rab
DONE

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Was genau bedeutet "Vibe Coding"? Ein tiefgehender Blick für Entwickler

In der Welt der Softwareentwicklung gibt es unzählige Wege, wie man an ein Projekt herangeht. Manche schwören auf strikte Planung, andere auf bewährte Algorithmen und wieder andere lassen sich von etwas ganz anderem leiten: ihrem Gefühl. ...

admin

Autor : admin
Kategorie: Software & Web-Development

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

sell info fullz SSN/SIN search DOB + Scans DL Driver License 2026

HOT Seller CVV Good 2026 - NON VBV Credit Card/Debit Card U.P.D.A.T.E CVV 2026 Sell CVV Good info And High Balance (Cvv CC Fullz Credit Cards Du ...

Geschrieben von sellergood11 am 09.06.2026 23:32:23
Forum: SEO - Suchmaschinen Tricks und Tipps
Buy CVV Fullz ssn mmn dob (transfer paypal cashapp) ALL COUNTRIES 2026

----------- Welcome to my Store ---------- ************************=>>>>> my store CC Shop | Buy Live CVV Fullz info | Good CVV Site 2026 – Full ...

Geschrieben von sellergood11 am 09.06.2026 23:31:34
Forum: Tutorials
available Fullz Info Leads Ca/UK/US_SSN_MMN_DOB_DL_Photo front Back Lookup

******my store CC Shop | Buy Live CVV Fullz info | Good CVV Site 2026 – Fullz Dumps + Pin $$$***=>>>>>Wellcome to my store. You can buy CVV f ...

Geschrieben von sellergood11 am 09.06.2026 23:30:17
Forum: Apps und PHP Script Gesuche
Clone ATM Cards Ready For CashOut Info Fullz DEAD UK SSN Sortcode MMN DOB DL

VERIFIED CARDER SELLING WU,BANK,PAYPAL,CASHAPP,SKRILL TRANSFER BANK LOGS,DUMPS+PIN,CLONED CARDS​ telegram:@king_dumps12 SELL CCV CANADA FULLZ ...

Geschrieben von sellergood11 am 09.06.2026 23:29:24
Forum: Entwicklungsumgebungen