欢迎访问我的博客,你的支持,是我最大的动力!

基于PHP7.2.19打造多线程开发环境

Linux 马从东 33℃ 评论
目录:
[显示]

PHP 默认并不支持多线程,要使用多线程需要安装 pthread 扩展,而要安装 pthreads 扩展,必须使用 --enable-maintainer-zts 参数重新编译 PHP,这个参数是指定编译 PHP 时使用线程安全方式。此外,我们打算使用 workerman 所以还需要编译 event 扩展。

编译 php-7.2.19

因为pthreads扩展当前最新版本3.2.0只支持到php 7.2,所以php先用7.2.19而不是7.3.6

# 安装编译工具
yum install gcc gcc-c++
# 安装php需要的依赖
yum install libxml2-devel
# 下载php源码包
curl -LO https://www.php.net/distributions/php-7.2.19.tar.gz
# 解压源码并进入源码目录
tar zxf php-7.2.19.tar.gz && cd php-7.2.19
# 配置
./configure \
--prefix=/opt/web_engine/php72 \
--with-config-file-path=/opt/web_engine/php72/etc \
--enable-maintainer-zts \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-sockets \
--with-tsrm-pthreads
# 编译和安装
make && make install
# 复制配置文件php.ini到/opt/web_engine/php72/etc目录
cp php.ini-development  php.ini-production /opt/web_engine/php72/etc/
cp /opt/web_engine/php72/etc/php.ini-production /opt/web_engine/php72/etc/php.ini
编译 event 扩展 event-2.5.2
# 安装编译工具
yum install autoconf
# 安装 event扩展依赖
yum install libevent libevent-devel openssl-devel
# 下载源码
## 下载页面 http://pecl.php.net/package/event
curl -LO http://pecl.php.net/get/event-2.5.2.tgz
# 解压源码并进入源码目录
tar zxf event-2.5.2.tgz && cd event-2.5.2
# 配置
/opt/web_engine/php72/bin/phpize
./configure --with-php-config=/opt/web_engine/php72/bin/php-config
# 编译和安装
make && make install
## 会生成扩展 /opt/web_engine/php72/lib/php/extensions/no-debug-zts-20170718/event.so
# 在php.ini配置文件中启用扩展
extension=event    #约930行
编译 pthreads 扩展 pthreads-3.2.0
# 下载源码
## 下载页面 https://github.com/krakjoe/pthreads/releases
## 注意:当前最新版本3.2.0 不支持php7.3 只支持到php7.2
curl -LO https://github.com/krakjoe/pthreads/archive/v3.2.0.tar.gz
# 解压源码并进入源码目录
tar zxf v3.2.0.tar.gz && cd pthreads-3.2.0
# 配置
/opt/web_engine/php72/bin/phpize
./configure --with-php-config=/opt/web_engine/php72/bin/php-config
# 编译和安装
make && make install
## 会生成扩展 /opt/web_engine/php72/lib/php/extensions/no-debug-zts-20170718/pthreads.so
# 在php.ini配置文件中启用扩展
extension=pthreads    #约931行
迁移与部署

将编译好的源码部署到开发服务器,开发服务器应与编译服务器系统一致

cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
uname -a
Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

在编译服务器上打包

tar czf php72.tar.gz /opt/web_engine/

在开发服务器上进行部署

# 安装依赖包
yum install libxml2-devel libevent libevent-devel openssl-devel
# 解压包
tar xzf php72.tar.gz -C /
# 创建软链接
cd /usr/bin && ln -s /opt/web_engine/php72/bin/php php

验证

# 查看版本
php -v
PHP 7.2.19 (cli) (built: Jun 11 2019 16:31:27) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# 查看是否为线程安全
php -i|grep TS
Zend Extension Build => API320170718,TS
PHP Extension Build => API20170718,TS
php -i|grep -n "Thread Safety"
19:Thread Safety => enabled
# 查看所有模块
php -m
Core ctype date dom event fileinfo filter hash iconv json libxml
pcntl pcre PDO pdo_sqlite Phar posix pthreads Reflection
session SimpleXML sockets SPL sqlite3 standard
sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter

 

转载请注明:轻风博客 » 基于PHP7.2.19打造多线程开发环境

喜欢 (0)or分享 (0)