PHP異步操做(swoole, gearman)

PHP異步操做php

廢話不說直接進入正題:
應用場景:
業務邏輯中常常會出現發送信息,發送郵件,記錄日誌等等,這個時候用異步再好不過了,用戶直接的體驗就是:使用的賊流暢~~vim

使用技術:
1.gearman : 這個不單單支持PHP了其餘語言也支持
2.swoole : 有PHP的擴展,用起來更方便
NOTE:感受上 gearman = swoole + 異步隊列;
不一樣點:
1.gearman有個隊列專門用來存儲發送過來的異步請求,即便worker掛了,重啓之後,照樣也能將沒有處理的請求處理.swoole在這點上沒有專門的處理
2.swoole的使用安裝更爲方便,使用C語言寫的PHP擴展,性能測試了下,槓槓的,使用到目前爲止沒有什麼問題,gearman的安裝比較麻煩,網上文章一大堆,試了不少都沒用,後來到了gearman的官網才解決掉.
3.gearman的歷史比較悠久,使用場景很豐富,有詳細的文檔,業務量不算很大的使用,很是穩定.swoole是中國人開發的(支持國產),有不少大型公司在使用,swoole

詳細的gearman安裝文檔:app

yum -y install libgearman

yum install libgearman-devel

wget http://pecl.php.net/get/gearman-1.1.2.tgz

tar -zxvf gearman-1.1.2.tgz

cd gearman-1.1.2

/data/apps/php/bin/phpize

./configure --prefix=/data/apps/phpgearman --with-php-config=/data/apps/php/bin/php-config

make&& make install

vim /data/apps/php/etc/php.ini
增長
extension=gearman.so
測試
vim 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());
}
?>
vim client.php

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

php client.php
!dlroW olleH

安裝swoole的PHP擴展:異步

wget http://pecl.php.net/get/swoole-1.7.17.tgz
tar -zxvf swoole-1.7.17.tgz
cd swoole-1.7.17
phpize
./configure
make && make install
相關文章
相關標籤/搜索