首頁  >  文章  >  後端開發  >  gearman 入門使用筆記

gearman 入門使用筆記

WBOY
WBOY原創
2016-08-08 09:23:251182瀏覽

一、簡介

gearman是可以把工作委派到其它機器或流程的工具。
官網位址:http://gearman.org/

Gearman通常由三個部分組成,client+worker+任務伺服器,由worker執行client發送的job,再透過job server回傳給client。 Gearman提供了Client、Worker的API,利用這些API來與job server通訊。
這是工作原理圖:

二、安裝

安裝官方指導在:http://gearman.org/getting-started/
以下介紹在ubuntu的具體安裝流程:

1.在ubuntu14.04,Python-Software-Properties被替換成了Software-Properties-Common.

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

2.安裝GearmanJobServer、Dev Tools、Perform Upgrade

2.安裝GearmanJobServer、Dev Tools、Perform Upgrade .如果沒有PECL,安裝PECL,並使用PECL安裝Gearman(CLI,Client,Worker)

<code>sudo apt-get install gearman-job-server libgearman-dev
sudo apt-get install gearman-tools
sudo apt-get upgrade
</code>
4.修改php.ini(CLI and Server)to Use Gearman

<code>sudo apt-get install php-pear
sudo apt-get install php5-dev
sudo pecl install gearman
</code>
在Dynamic Extensions裡加上:

extension=gearman.so

三、在php裡使用gearman

1、php呼叫gearman的方法

php查看版本

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

rl

rr個worker

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

。這段程式碼建立一個worker對象,加入預設的server,註冊reverse的回呼函數。程式會進入一個死循環,每當有job進入的時候,回呼函數會執行,這裡只是簡單的把字串反轉,然後回傳。

建一個Client

client類似worker,建立下面的server.php

<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>

看下執行結果:

建一個圖碼

這裡使用指令的方式呼叫client

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

2、不使用php ,直接用指令列的方式使用gearman 範例

啟動一個終端執行守護程式

<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>

啟動一個worker,這裡呼叫一個啟動一個終端機執行守護程式

<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>
一個client

<code>gearman -f resize < full.jpg > thumb.jpg
</code>
可以看到輸出結果。

參考網址:http://gearman.org/getting-started/#client


以上就介紹了gearman 入門使用筆記,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn