Heim >Backend-Entwicklung >PHP-Tutorial >Gearman-Erste-Schritte-Notizen

Gearman-Erste-Schritte-Notizen

WBOY
WBOYOriginal
2016-08-08 09:23:251229Durchsuche

1. Einführung

Gearman ist ein Tool, das Arbeit an andere Maschinen oder Prozesse delegieren kann.
Offizielle Website-Adresse: http://gearman.org/

Gearman besteht normalerweise aus drei Teilen: Client-Worker-Task-Server, Worker führt den vom Client gesendeten Job aus und gibt ihn dann über den Job an den Client zurück Server. Gearman stellt Client- und Worker-APIs bereit und verwendet diese APIs für die Kommunikation mit dem Jobserver.
Dies ist das Funktionsprinzipdiagramm:

2. Installation

Die offizielle Installationsanleitung finden Sie unter: http://gearman.org/getting-started/
Im Folgenden wird der spezifische Installationsprozess in Ubuntu beschrieben:

1. In Ubuntu 14.04 wird Python-Software-Properties durch Software-Properties-Common ersetzt.

<code>sudo apt-get install software-properties-common
sudo add-apt-repository ppa:gearman-developers/ppa
sudo apt-get update
</code>

2 , Entwicklungstools, Upgrade durchführen

<code>sudo apt-get install gearman-job-server libgearman-dev
sudo apt-get install gearman-tools
sudo apt-get upgrade
</code>

3. Wenn keine PECL vorhanden ist, installieren Sie PECL und verwenden Sie PECL, um Gearman (CLI, Client, Worker) zu installieren

<code>sudo apt-get install php-pear
sudo apt-get install php5-dev
sudo pecl install gearman
</code>

4. Ändern Sie php.ini (CLI und Server), um Gearman zu verwenden

<code>sudo vi /etc/php5/cli/php.ini
</code>

Dynamische Erweiterungen hinzufügen:
extension=gearman.so

3. Gearman in PHP verwenden

1. So rufen Sie Gearman in PHP auf

PHP-Version anzeigen

<code><?php print gearman_version() . "\n"; ?>
运行方式:php test.php
</code>

Erstellen Sie einen Worker

<code><?php
    $worker= new GearmanWorker();
    $worker->addServer();
    $worker->addFunction("reverse", "my_reverse_function");
    while ($worker->work());

    function my_reverse_function($job){
      return strrev($job->workload());
    }
?>
</code>

Nachdem Sie dies ausgeführt haben, müssen Sie Strg C drücken, um das Programm zu beenden. Dieser Code erstellt ein Worker-Objekt, fügt den Standardserver hinzu und registriert die Reverse-Callback-Funktion. Das Programm tritt in eine Endlosschleife ein, wobei die Callback-Funktion ausgeführt wird. Dabei wird die Zeichenfolge einfach umgekehrt und dann zurückgegeben.

Erstellen Sie einen Client

Client ähnelt Worker, erstellen Sie die folgende server.php

<code><?php
$client=new GearmanClient();
$client->addServer();
print $client->do("reverse","Hello World!");
?>
</code>

Sehen Sie sich die Ausführungsergebnisse an:

Erstellen Sie einen Image-Resize-Worker

<code><?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("resize", "my_resize_function");
while ($worker->work());

function my_resize_function($job)
{
  $thumb = new Imagick();
  $thumb->readImageBlob($job->workload());

  if ($thumb->getImageHeight() > 600)
    $thumb->scaleImage(0, 600);
  else if ($thumb->getImageWidth() > 800)
    $thumb->scaleImage(800, 0);

  return $thumb->getImageBlob();
}
?>
</code>

PHP erfordert ImageMagick-Unterstützung, Installationsmethode:

<code>sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -xzvf ImageMagick.tar.gz
cd ImageMagick
sudo ./configure -prefix=/usr/local/imagemagick -enable-lzw -with-modules && make && make install
</code>

Resize-Client

Verwenden Sie hier den Befehl zum Aufrufen der Client

<code>gearman -f resize < full.jpg > thumb.jpg
</code>

2. Verwenden Sie kein PHP, sondern Gearman direkt über die Befehlszeile.

Starten Sie ein Terminal, um den Daemon-Prozess auszuführen

<code>sudo gearmand --daemon
</code>

Starten Sie einen Worker, rufen Sie hier den ls-Befehl auf

<code>gearman -w -f ls -- ls -lh
</code>

Starten Sie einen Client

<code>gearman -f ls < /dev/null
</code>

, um die Ausgabe anzuzeigen.

Referenz-URL: http://gearman.org/getting-started/#client

Das Obige stellt die Verwendungshinweise für den Gearman-Eintrag vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn