關於PHP連接池擴展php-cp遇到的那些坑


php-cp是國內大神寫的php第三方擴展,具體就不用多說了,細讀https://github.com/swoole/php-cp,下面來說說今天安裝方法。

環境:CentOS7.2.1511

由於本身已經安裝過lnmp7環境,而php-cp對php7支持不太好,於是在此基礎上再安裝php5.6.30,兩個php版本切換用。

#安裝配置
./configure --prefix=/usr/local/php5.6 \ --with-gd \ --with-freetype-dir \ --enable-gd-native-ttf \ --enable-mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-openssl \ --with-mcrypt \ --enable-mbstring \ --enable-zip \ --enable-fpm
make
make install

#復制配置文件
cp /源碼包/php.ini-development /usr/local/php5.6/lib/php.ini
cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
cp /usr/local/php5.6/etc/php-fpm.d/www.conf.default /usr/local/php5.6/etc/php-fpm.d/www.conf


 

#修改fpm監聽端口,防止與php7端口沖突

vi /usr/local/php5.6/etc/php-fpm.conf
修改為:
listen = 127.0.0.1:9056

 

 

# 修改 nginx 監聽 php5.6 的9056端口
vi /usr/local/nginx/conf/nginx.conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9056; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name; include fastcgi_params; }

 

#關閉nginx並重啟
ps -aux |grep nginx
kill -INT XXX
/usr/local/nginx/sbin/nginx

#關閉php7的fpm
ps -aux |grep fpm
kill -INT XXX
#啟動php5.6的fpm
/usr/local/php5.6/sbin/php-fpm

 

 

#避免麻煩,把php和phpize都加入到/usr/local/bin中
ln -s /usr/local/php5.6/bin/php /usr/local/bin/php5
ln -s /usr/local/php5.6/bin/phpize /usr/local/bin/phpize5

 

 

下載php-cp-master,是個zip壓縮包

unzip master.zip
cd php-cp-master
phpize5
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make
make install #官方make & make install ,但我建議分開寫

 

 

配置php.ini

echo "extension=connect_pool.so" >> /usr/local/php5.6/lib/php.ini

 

 

下面官網配置

cp ./config.ini.example /etc/pool.ini //根據需求修改配置內容
mkdir -m 755 /var/log/php-connection-pool //創建日志目錄 目錄文件夾不存在或沒權限會導致日志寫不起
chmod +x ./pool_server //x權限git已經設置 為穩妥再設置一次 pool_server為php腳本 可自行修改
[ -f /bin/env ] || sudo ln -s /usr/bin/env /bin/env  //deb系的系統(如debian、ubuntu)env的路徑為/usr/bin/env做軟鏈接兼容處理

 

 

 平滑重啟fpm

ps -aux |grep fpm
kill -USR2 xxx

 

查看php擴展是否有connect_pool,有即成功,無則算了

php5 -m
[PHP Modules]
connect_pool
Core
ctype
....

 

 

連接池服務使用:

cp ./pool_server /usr/local/bin/pool_server 
pool_server start //啟動服務 如果配置文件的daemonize開啟則后台運行 否則為前台運行 Ctrl+c結束服務
pool_server stop //停止服務
pool_server restart //重啟服務
pool_server status //查看服務狀態

 

坑:目錄下有一個pool_server ,官網是直接將其復制到/usr/local/bin中執行,但前提是你必須將php加入到linux環境中,如果沒有,則會報錯。

解決方法:

1,php加入到環境變量中

2,使用 php5 pool_server start運行服務。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM