如何在 PHP 8.3 上編譯安裝 Event 事件驅(qū)動(dòng)擴(kuò)展庫?
PHP Event 擴(kuò)展是 PHP 的一個(gè)擴(kuò)展庫,用于處理事件驅(qū)動(dòng)的編程。它提供了一種機(jī)制,使開發(fā)者能夠創(chuàng)建、監(jiān)聽和處理事件。事件是一種在特定條件下觸發(fā)的通知或動(dòng)作,可以在應(yīng)用程序的不同部分之間進(jìn)行通信和交互。
PHP Event 擴(kuò)展提供了一組函數(shù)和類,用于創(chuàng)建事件循環(huán)、注冊事件監(jiān)聽器、觸發(fā)事件等。它基于 libevent 庫,一個(gè)事件通知庫,可以在不同的操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境中使用。
使用 PHP Event 擴(kuò)展,您可以編寫基于事件的應(yīng)用程序,例如異步網(wǎng)絡(luò)服務(wù)器、實(shí)時(shí)通信應(yīng)用、長時(shí)間運(yùn)行的任務(wù)等。它可以幫助您提高應(yīng)用程序的性能和響應(yīng)能力,減少資源消耗,并簡化代碼結(jié)構(gòu)。
在當(dāng)前的服務(wù)器上,面對(duì)的主要問題就是要能處理大量的連接。而通過libevent這個(gè)網(wǎng)絡(luò)庫,我們就可以調(diào)用它的API來很好的解決上面的問題。
依賴
- libevent庫: libevent 是一個(gè)輕量級(jí)的基于事件驅(qū)動(dòng)的高性能的開源網(wǎng)絡(luò)庫,并且支持多個(gè)平臺(tái),對(duì)多個(gè)平臺(tái)的I/O復(fù)用技術(shù)進(jìn)行了封裝,當(dāng)我們編譯庫的代碼時(shí),編譯的腳本將會(huì)根據(jù)OS支持的處理事件機(jī)制,來編譯相應(yīng)的代碼,從而在libevent接口上保持一致。
- OpenSSL庫: OpenSSL 項(xiàng)目開發(fā)和維護(hù)OpenSSL軟件-一個(gè)強(qiáng)大的,商業(yè)級(jí)的,功能齊全的工具包,用于通用密碼學(xué)和安全通信。該項(xiàng)目的技術(shù)決策由OpenSSL技術(shù)委員會(huì)(OTC)管理,項(xiàng)目治理由OpenSSL管理委員會(huì)(OMC)管理。
安裝
libevent 安裝
查看是否已經(jīng)安裝
ls -al /usr/lib | grep libevent
下載
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
解壓
tar -zxvf libevent-2.1.12-stable.tar.gz
配置安裝目錄
./configure --prefix=/usr/local/libevent-2.1.12
編譯安裝
make && make install
查看是否安裝成功
$ ls -al /usr/local/ | grep libevent
drwxr-xr-x 5 root root 4096 Mar 17 2023 libevent-2.1.12
PHP event 安裝
官方庫地址:http://pecl.php.net/package/event
圖片
下載最新版本
wget http://pecl.php.net/get/event-3.1.0.tgz
解壓
tar -zxvf event-3.1.0.tgz
生成 ./configure 配置文件
cd event-3.1.0/
/usr/local/php-8.3.1/bin/phpize
Configuring for:
PHP Api Version: 20230831
Zend Module Api No: 20230831
Zend Extension Api No: 420230831
配置鏈接庫以及指定libevent安裝目錄
./configure --with-php-cnotallow=/usr/local/php-8.3.1/bin/php-config --with-event-libevent-dir=/usr/local/libevent-2.1.12/
指定 libevent 支持庫的目錄路徑 --with-event-libevent-dir
編譯
$ make
安裝
$ sudo make install
Parse /home/www/build/event-3.1.0/php8/php_event.stub.php to generate /home/www/build/event-3.1.0/php8/php_event_arginfo.h
Parse /home/www/build/event-3.1.0/php8/src/../php_event.stub.php to generate /home/www/build/event-3.1.0/php8/src/../php_event_arginfo.h
Installing shared extensions: /usr/local/php-8.3.1/lib/php/extensions/no-debug-non-zts-20230831/
php.ini 添加擴(kuò)展 event.so
sudo vim /usr/local/php-8.3.1/etc/php.ini
extensinotallow=event.so
命令行檢查是否安裝成功
/usr/local/php-8.3.1/bin/php -m|grep event
event
瀏覽器檢查是否安裝成功
圖片