前言

因为项目上的需要,需要用到php,一般来说,用默认的版本和配置就可以满足大多数的场景,因为需要加入多线程,所以需要自己编译一个包

一般来说,发行的包的版本的配置选项和代码都是最稳定的,所以在大多数情况下,我都不会直接去拿原始的源码做编译,这里我的经验是用别人发布版本的源码包,然后根据自己的需要,做修改,然后打包,这次的处理方法还是一样

获取源码

地址:

https://uk.repo.webtatic.com/yum/el7/SRPMS/RPMS/

这个是webtatic发行的php版本,做了一些修改和优化

选择需要的版本

[root@lab8106 myphp]# wget https://uk.repo.webtatic.com/yum/el7/SRPMS/RPMS/php56w-5.6.26-1.w7.src.rpm

解压安装包

[root@lab8106 myphp]# rpm2cpio php56w-5.6.26-1.w7.src.rpm |cpio -div

解压完成了后,当前目录下面会有很多文件

修改当前目录下面的php56.spec

在编译相关的configure后面增加

--enable-maintainer-zts

拷贝解压和修改的文件到源码编译目录

[root@lab8106 myphp]# cp -ra * /root/rpmbuild/SOURCES/

编译rpm包

[root@lab8106 myphp]# rpmbuild -bb php56.spec

如果提示缺依赖,就把相关的依赖包安装好就可以了,编译环境最好跟最终使用环境是一样的环境,执行完成了以后,会生成rpm安装包

增加多线程支持

pecl install pthreads-2.0.9

这个会下载源码,然后自动编译成可用的内核模块,将这个内核模块的配置文件和模块文件拷贝到最终使用环境即可

检查是否安装成功

[root@lab8106 ceph]# php -m|grep pth
pthreads

可用看到已经支持了

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-10-10

编译一个支持多线程的php安装包的更多相关文章

  1. 基于c++11新标准开发一个支持多线程高并发的网络库

    背景 新的c++11标准出后,c++语法得到了非常多的扩展,比起以往不论什么时候都要灵活和高效,提高了程序编码的效率,为软件开发者节省了不少的时间. 之前我也写过基于ACE的网络server框架,但A ...

  2. 使IIS服务器支持下载 apk/ipa 安装包

    默认情况下,使用IIS作为Web服务器的无法下载此文件,访问会触发404错误,服务器找不到对应资源. IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. ...

  3. 编译一个支持django及mysqlclient连接的alpine镜像

    一切都不难,难的就是在alpine镜像里. 最后,使用了网上编译好mysqlclient的镜像,才搞定. 记录一下. 一,基础镜像Dockerfile https://github.com/tnir/ ...

  4. Linux 环境编译安装mysql (源码安装包)

    标注: Linux需要先配置网络yum源,确定yum能在线安装软件包,方便测试过程中安装部分依赖包.配置163网易提示的网络yum源参考博客  http://www.cnblogs.com/zoulo ...

  5. 7z制作自解压安装包

    像7z和winRAR这样的压缩工具都支持制作自解压的文件.所谓自解压的文件就是不需要目标机器上安装解压工具,通过运行压缩包自己即可解压出压缩包中的文件.下面我们就介绍一下如何利用7z的自解压功能制作应 ...

  6. 微信小程序使用npm安装包

    小程序现在支持直接通过npm安装包了,点击这里了解更多. 记录一下我自己的安装步骤及安装过程中遇到的一些问题.希望能够帮助到正在阅读此篇文章的你~ 我就直接通过在项目根目录安装miniprogram- ...

  7. 使用InstallAnywhere7.1制作Java exe程序安装包

    [转[使用InstallAnywhere7.1制作Java exe程序安装包 使用InstallAnywhere7.1制作Java exe程序安装包 对于已经完成的Java应用程序开发项目,从商业化角 ...

  8. c# 编写windows 服务,并制作安装包

    对服务的认识有很多个阶段. 第一阶段:当时还在用c++,知道在一个进程里while(True){},然后里面做很多很多事情,这就叫做服务了,界面可能当时还用Console控制台程序. 第二阶段:知道了 ...

  9. 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)

    前言:关于如何制作一个软件安装包的教程,与编程语言无关.以下,请看详情~ 1.下载Inno Setup,下载地址:https://jrsoftware.org/isinfo.php 2.下载最新版本即 ...

随机推荐

  1. npoi 设置单元格格式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Windos--jar包注册成服务

    1.下载资源 链接: https://pan.baidu.com/s/16asJXGudsRN23Rwra_qGZw 提取码: w2gv 解压后有五个文件 1.1注意事项 1.把你的生成的jar包放入 ...

  3. filezilla pureftpd 读取目录列表失败

    放行   21, 39000 - 40000端口

  4. git下载线上分支到本地分支

    首先执行 'git branch -r' 查看线上的所有分支 例如像要拷贝线上分支 'origin/online' 到本地本地分支 'online',则执行 'git checkout -b onli ...

  5. vue-cli中使用swiper

    1.当前项目配置 cnpm install swiper vue-awesome-swiper --save 或指定版本下载 cnpm install swiper@5.4.5 vue-awesome ...

  6. 专题一:why redis ?

    一.NoSQL   现在互联网应用其中有两个特点:(1)海量用户(2)不可避免地高并发.常常因为这样,我们网站或者服务器将面临崩溃的风险.而多用户.高并发只是现象,究其根源,罪魁祸首就是关系型数据库, ...

  7. Redis常用命令(6)——SortedSet

    ZADD 格式:ZADD key score member [[score member] [score member] ...] 作用:向有序集合key中插入一个或多个元素.如果元素已经存在,更新s ...

  8. 基于PHP实现短信验证码接口的方法

    步骤: 1.登录荣联运通讯注册获取ACCOUNT SID.AUTH TOKEN.Rest URL(生产).AppID(默认): 2.注册测试用手机号码(先注册测试号码方可使用): 3.下载demo示例 ...

  9. [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)

    题面 传送门:洛谷 Solution 这题其实是有类似模型的. 我们先考虑不修改怎么写.考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了).题目所 ...

  10. Linux__用户用户组和权限

    用户用户组和权限 useradd +用户名, 添加这个用户 userdel +用户名, 删除这个用户(有残留 ) userdel -r +用户名, 彻底删除这个用户 groupadd +组名 ,添加这 ...