Alan Moment
  • Introduction
  • 智慧家庭
    • Fibaro 系統整合便宜的 IP Cam
  • Life
    • 用AWS Glacier做最後的冷資料備份
    • 如何在macOS修改影音檔日期
  • 3D Printer
    • Atom2.5EX 之血淚組裝
    • 列印經驗紀錄
      • SpoolHolder
    • 製圖經驗
      • Turntable
      • 重製Atom3散熱風扇
    • 線材經驗
      • PETG
        • 首測
  • Kubernetes
    • 使用Kops建立Kubernetes
    • 使用HelmV2
    • Kubernetes的技術問題排解技巧
  • PHP
    • 管理PHP Library的利器Composer
    • PHP安裝JSON
    • Phalcon首發
    • Gearman Job Worker for PHP
    • Laravel 首發 !!!
    • Data Encrypt & Decrypt
  • Python
    • Django + Python 開發環境建置
  • Android
    • Android zipcode library of maven
    • Android use foreign object of OrmLite
    • ProgressBar while loading ListView of Android
    • AsyncTask download image by the Android
    • Use Thread control Android UI
    • Android Universal Image Loader
  • Ruby on Rails
    • Install rmagick on the Windows of Ruby on Rails
    • Ruby on Rails deploy on Heroku
    • Ruby on Rails 小問題
  • React
    • Ditched AngularJS for React
  • Tessel
    • 很潮的 Tessel
    • Connect to Slack on Tessel
    • Baby Help on Tessel
  • Node.js
    • CentOS 安装 Node.js 0.8.5
  • OOAD
    • Injection Principle Design Pattern
  • Linux
    • SSH免密碼登入遠端電腦
    • Apache與Tomcat的結合
    • The bash auto build
  • Hadoop
    • CentOS 5.5 + Hadoop 0.20
    • CentOS 5.5 + Hbase 0.94.8
    • Hadoop + Hbase 叢集環境
    • Hadoop 溝通橋梁之 Thrift 0.7
    • 使用MapReduce之替代方案Hive
    • 使用Sqoop將MySQL資料匯入Hbase
  • Database
    • 吃足苦頭的Mssql
  • IDE
    • Netbeans console中文亂碼解決方法
    • 用NetBeans開發Ruby On Rails
  • Agile
    • 淺談我的Agile
  • 協作工具
    • 建置專屬自己的Github之Gitlab
    • Gitlab 4.1 upgrade to Gitlab 6.0超偷懶方法
    • Install Phabricator and run on the Gitlab
    • Phabricator 基本應用
    • Phabricator review code應用
    • Redmine之基本建置與Scrum應用
    • Omnibus Gitlab 7 基礎操作
    • Git Push Notify to Slack on Gitlab
    • phabricator-extensions-Sprint 無法抓到正確的 Story Points
  • 其他
    • 慶祝Octopress開張
    • 走在時尚的尖端! Ghost
    • 大搬家
    • 網頁教學初體驗
    • 網路攻擊很猖狂
Powered by GitBook
On this page
  • 安裝 Gearman
  • 安裝 Gearman 依賴包
  • 安裝 PHP 的 Gearman extension
  • Hello World

Was this helpful?

  1. PHP

Gearman Job Worker for PHP

PreviousPhalcon首發NextLaravel 首發 !!!

Last updated 3 years ago

Was this helpful?

最近同事接觸到需要 worker 來處理一些非同步的事情。諸如訂單、寄發 email 都常用非同步來執行,以往這些事情大多都用排程解決,其實還有更好的 solution。他們使用 來解決這個問題。好奇心的驅使,就算不是我實作的我也想去玩玩看新的東西,Gearman 可以在系統裡起一個 Job Worker 也可以算是 service,這個 job worker 可以在不起一個排程的情況底下,幫你寄信、處理訂單。也就是當你有需要使用 email 在呼叫他就好了。

安裝 Gearman

在 CentOS 中可以直接用 yum 安裝

yum install -y gearmand

安裝 Gearman 依賴包

yum -y install re2c geoip geoip-data geoip-devel gcc* boost* libgearman*

這兩個步驟都很簡單

安裝 PHP 的 Gearman extension

wget http://pecl.php.net/get/gearman-1.1.1.tgz
cd gearman-1.1.1
phpize
./configure
make && make install

最後在 php.ini 加上 module

vim /etc/php.ini
extension="gearman.so"

儲存後重新啟動

service httpd restart

這樣 php 就支援 gearman 囉

Hello World

不免俗的一定要測試一下的,這邊我就利用官網提供的程式碼做測試。

首先建立一隻 worker.php

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

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

再建立一隻 client.php

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

然後執行 worker

php worker.php

再執行 client 就可以得到 Hello World 了

php client.php

若要停止這個 job worker 可以用 Ctrl + C

Dec 22nd, 2013 4:40:00pm

這東西還蠻強大的,之前試用過 覺得 Gearman 相對強大許多。

Beanstalk
Gearman