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