PHP Libevent 擴展


1      Libevent介紹

2      爲什麼要學習libevent

3      Php libevent 擴展模塊安裝


1、 libevent介紹

libevent是一個事件觸發的網絡庫,適用於windowslinuxfreebsd等多種平臺,內部使用selectpollepollkqueue等系統調用管理事件機制。Libevent是跨平臺的,而且具有非凡的性能。與nodejs一樣是事件驅動的;官方網站:http://libevent.org/

最新的穩定版本

https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz

主要模塊:

事件處理框架

事件引擎模塊

Buffer管理模塊

信號處理模塊

 

php本身不支持多線程,php不能很好實現併發機制。Pecl提供的pcntl(進程控制)、libevent擴展、socket包、stream系統函數,可以使用php輕易地開發出高性能,高併發的網絡應用程序。

簡單應用事例:Pcntl fork nworkermaster process 得到請求後,處理信息發送給worker程序 worker處理完後回傳給clientMaster process 可以跟據併發量,來設定worker的數量,n的大小,並monitor(監控)worker的數據,在不足時啓動更多的進程。同nginx原理。

附:Php網絡編程框架

http://code.google.com/p/swoole/downloads/list

2 爲什麼要學習libevent

http server可以說是libevent的經典應用。可以從libevent當中找到http的標準寫法,非阻塞的http server也就是socket處理與http協議處理纏繞。

學習libevent有助於提升程序設計功力,除了網絡程序設計方面外,Libevent的代碼裏有很多有用的設計技巧和基礎數據結構,比如信息隱藏、函數指針、c語言的多態支持、鏈表和堆等等,都有助於提升自身的程序功力1

對請求的處理的三種類型:

1、  connection input  fork a new process

2、  connection input  pthread_create

3、  connection input throw a Event-based array; main process do nonblocking things;

 

3 Php libevent 擴展模塊安裝

Curl –O https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz

 

Tar –zxvf libevent-2.0.16-stable.tar.gz

Cd libevent-2.0.16-stable

/usr/local/php/bin/phpize

./configure

make

make install

vi /usr/local/php/etc/php.ini

extension_dir=””;

extension=libevent.so

php –m | grep lib

 

安裝成功

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章