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打造多线程开发环境相关推荐

  1. 在 Mac/win7 下上使用 Vagrant 打造本地开发环境

    1. vagrant介绍 1.1 vagrant能做什么 做Web开发(java/php/python/ruby...)少不了要在本地搭建好开发环境,虽然说目前各种脚本/语言都有对应的Windows版 ...

  2. nginx nodejs环境配置_基于docker的nodejs、php开发环境,包含多种组合安装

    dnnmmp 基于docker的nodejs.php开发环境 (docker,nodejs,php,nginx,mongo,mysql,redis) Dnnmmp包含以下组合 dnm(Docker + ...

  3. 基于MacOS搭建ESP8266 NodeMCU CP2102开发环境

    基于MacOS搭建ESP8266-NodeMCU开发环境 1. 下载.安装驱动 2. Arduino开发环境配置 2.1. 下载.安装Arduino 2.2. 配置Arduino 1. 下载.安装驱动 ...

  4. #Kinect之路#基于ubuntu 12.04的Kinect开发环境搭建 OpenNI+NITE+AVIN2+qt

    之前基于Win7搭建了kinect的开发环境,由于本人的机子太慢,编一个qt的hello world都要半分钟,所以为了方便以后的开发调试,尝试在ubuntu 12.04下搭建开发环境. 注意,如果你 ...

  5. 基于Eclipse平台的Android OpenCV开发环境搭建

    基于Eclipse平台的Android OpenCV开发环境搭建 作者:雨水, 日期:2016-1-31,CSDN博客:http://blog.csdn.net/gobitan 摘要:本文主要记录了如 ...

  6. 如何用 docker 打造前端开发环境

    用 docker 做开发环境的好处 保持本机清爽 做开发的都知道,电脑一买回来就要安装各种各样的环境,比如前端开发需要安装 node.yarn.git 等,为了使用某些工具或者包,可能还需要安装 py ...

  7. 集成环境哪个好?四大PHP集成开发环境比较

    http://www.5icool.org/a/201505/a11537.html 专注了这么些年技术,没有养成记录和积累的习惯.如今乐于开源和分享经验,却停笔踌躇,不知该从何处说起.开通博客也有一 ...

  8. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置

    1. 安装说明 Ubuntu 下直接安装 Go 1.11 版本编译器时需要依赖 Go 1.4 版本.所以如果在使用 apt-get install go安装时参考以下链接安装:https://blog ...

  9. python的集成开发环境搭建_Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细)...

    Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细) 前沿 ​ Hello,各位看官,您是不是决定要学习Python数据分析,您是不是现在正在"学" ...

最新文章

  1. BH38旋转编码器初步测试
  2. 我的配置(vc可以禁止控制台输出)
  3. 码农翻身之——分布式,集群,负载均衡
  4. android 查看多个图片,一分钟实现Android多张图片选择
  5. apache的日志切割
  6. Java Web文件上传原理分析(不借助开源fileupload上传jar包)
  7. linux进程间通信练习:对于text.txt文件,子进程将字符串“something communication”写入text.txt,父进程读取text.txt文件内容并打印。
  8. 用计算机数字语言研究中医理论,试论中医基础理论数字模型.pdf
  9. 基于Verilog的简易计算器
  10. unity简单的粒子特效的制作
  11. 通过 BT 种子 info_hash 值下载种子又一法
  12. 汇率战争下的人民币走势
  13. matlab coder分析
  14. 河北等保测评机构项目测评收费价格标准参考
  15. 言语中心理解题(必要条件,程度词,并列关系)
  16. IEEE754浮点数格式详解
  17. 牛年伊始,鹏欣携手MTC,打造中国千亿级肉牛产业航母
  18. ARM基础教程 | ARM、Cortex-M与ARMv8-M什么关系?
  19. 2022年新消费趋势洞察(护肤篇):时下大热的美妆成分全面复盘
  20. python可以开发手机AAP吗?kivy说可以

热门文章

  1. JVM监控:JVM监控指标、JVM监控界面实现、Java监控JVM
  2. 重读《C primer plus》(十一)
  3. 邹承鲁院士谈学术文献阅读
  4. Hibernate唯一约束
  5. python爬虫爬图片教程_Python爬虫爬图片需要什么
  6. react 引入轮播插件_简单实现 babelpluginimport 插件
  7. 星际2服务器未能成功创建游戏,《星际争霸2》全球畅玩即将开启 常见问题解答...
  8. Git更新远程仓库代码到本地仓库办法
  9. php采集一言代码_【PHP】简单的一言API源码
  10. 2018/03/08