php 多线程环境,基于PHP7.2.19打造多线程开发环境
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
喜欢 (0)or分享 (0)
php 多线程环境,基于PHP7.2.19打造多线程开发环境相关推荐
- 在 Mac/win7 下上使用 Vagrant 打造本地开发环境
1. vagrant介绍 1.1 vagrant能做什么 做Web开发(java/php/python/ruby...)少不了要在本地搭建好开发环境,虽然说目前各种脚本/语言都有对应的Windows版 ...
- nginx nodejs环境配置_基于docker的nodejs、php开发环境,包含多种组合安装
dnnmmp 基于docker的nodejs.php开发环境 (docker,nodejs,php,nginx,mongo,mysql,redis) Dnnmmp包含以下组合 dnm(Docker + ...
- 基于MacOS搭建ESP8266 NodeMCU CP2102开发环境
基于MacOS搭建ESP8266-NodeMCU开发环境 1. 下载.安装驱动 2. Arduino开发环境配置 2.1. 下载.安装Arduino 2.2. 配置Arduino 1. 下载.安装驱动 ...
- #Kinect之路#基于ubuntu 12.04的Kinect开发环境搭建 OpenNI+NITE+AVIN2+qt
之前基于Win7搭建了kinect的开发环境,由于本人的机子太慢,编一个qt的hello world都要半分钟,所以为了方便以后的开发调试,尝试在ubuntu 12.04下搭建开发环境. 注意,如果你 ...
- 基于Eclipse平台的Android OpenCV开发环境搭建
基于Eclipse平台的Android OpenCV开发环境搭建 作者:雨水, 日期:2016-1-31,CSDN博客:http://blog.csdn.net/gobitan 摘要:本文主要记录了如 ...
- 如何用 docker 打造前端开发环境
用 docker 做开发环境的好处 保持本机清爽 做开发的都知道,电脑一买回来就要安装各种各样的环境,比如前端开发需要安装 node.yarn.git 等,为了使用某些工具或者包,可能还需要安装 py ...
- 集成环境哪个好?四大PHP集成开发环境比较
http://www.5icool.org/a/201505/a11537.html 专注了这么些年技术,没有养成记录和积累的习惯.如今乐于开源和分享经验,却停笔踌躇,不知该从何处说起.开通博客也有一 ...
- Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
1. 安装说明 Ubuntu 下直接安装 Go 1.11 版本编译器时需要依赖 Go 1.4 版本.所以如果在使用 apt-get install go安装时参考以下链接安装:https://blog ...
- python的集成开发环境搭建_Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细)...
Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细) 前沿 Hello,各位看官,您是不是决定要学习Python数据分析,您是不是现在正在"学" ...
最新文章
- BH38旋转编码器初步测试
- 我的配置(vc可以禁止控制台输出)
- 码农翻身之——分布式,集群,负载均衡
- android 查看多个图片,一分钟实现Android多张图片选择
- apache的日志切割
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
- linux进程间通信练习:对于text.txt文件,子进程将字符串“something communication”写入text.txt,父进程读取text.txt文件内容并打印。
- 用计算机数字语言研究中医理论,试论中医基础理论数字模型.pdf
- 基于Verilog的简易计算器
- unity简单的粒子特效的制作
- 通过 BT 种子 info_hash 值下载种子又一法
- 汇率战争下的人民币走势
- matlab coder分析
- 河北等保测评机构项目测评收费价格标准参考
- 言语中心理解题(必要条件,程度词,并列关系)
- IEEE754浮点数格式详解
- 牛年伊始,鹏欣携手MTC,打造中国千亿级肉牛产业航母
- ARM基础教程 | ARM、Cortex-M与ARMv8-M什么关系?
- 2022年新消费趋势洞察(护肤篇):时下大热的美妆成分全面复盘
- python可以开发手机AAP吗?kivy说可以
热门文章
- JVM监控:JVM监控指标、JVM监控界面实现、Java监控JVM
- 重读《C primer plus》(十一)
- 邹承鲁院士谈学术文献阅读
- Hibernate唯一约束
- python爬虫爬图片教程_Python爬虫爬图片需要什么
- react 引入轮播插件_简单实现 babelpluginimport 插件
- 星际2服务器未能成功创建游戏,《星际争霸2》全球畅玩即将开启 常见问题解答...
- Git更新远程仓库代码到本地仓库办法
- php采集一言代码_【PHP】简单的一言API源码
- 2018/03/08