PHP7多线程搭建教程


Posted in PHP onApril 21, 2017

一直想写个爬虫,于是就用PHP写了一个,众所周知PHP并不支持多线程,所以爬行效率很低,同时运行10个进程,内存和CPU占用率很高,开大概10个进程爬行,对爬行时间还进行优化,但我的mac pro还是差不多就down掉了。 于是开始采用PHP7结合pthreads多线程工具,经测试,稳定性、效率、内存和cpu的占用各方面都很满意。 下边就介绍PHP7的多线程环境搭建。

安装PHP7

以下所有命令在root用户下执行 下载PHP7,目前最新版本是7.0.3,根据情况自行选择版本,PHP5.4以后的各版本也是支持的。

wget http://ar2.php.net/get/php-7.0.3.tar.gz/from/this/mirror -O php.tar.gz
tar xvfz php.tar.gz
cd php

编译安装。

选项自行选择,可以让PHP多版本共存。但maintainer-zts是必须的,如果只做爬虫,除了curl,其它扩展基本不用安装。遇到无法安装的自行查找解决,例如我安装的时候遇到iconv没有找到,那直接就without了。

./configure --prefix=/usr/local/php7 --without-iconv --enable-maintainer-zts --with-curl
make
make install

安装完成

然后开始安装pthreads。用pecl安装是超级简单的。

cd /usr/local/php7/bin
./pecl install pthreads

安装完成

配置文件

在/usr/local/php7/lib/目录下新建php.ini文件,初始文件可在php源码的根目录找到php.ini-production 然后编辑php.ini,在末尾增加

extension="pthreads.so"

安装完成

查看安装是否成功

运行

/usr/local/php7/bin/php -m

查看模块支持列表,如果有pthreads存在则说明环境创建成功。 或者编辑文件test.php

<?php
$thread = new class extends Thread { 
  public function run() { 
    echo "Hello World\n";
  }
};
$thread->start() && $thread->join();
?>

成功输出Hello World说明成功。

以上所述是小编给大家介绍的PHP7多线程搭建教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP 高手之路(一)
Oct 09 PHP
也谈截取首页新闻 - 范例
Oct 09 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
PHP 变量的定义方法
Jan 26 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP的JSON封装、转变及输出操作示例
Sep 27 PHP
Yii Framework框架开发微信公众平台示例
Apr 26 PHP
详细分析PHP 命名空间(namespace)
Jun 30 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 #PHP
php获取excel文件数据
Apr 21 #PHP
PHP实现限制IP访问的方法
Apr 20 #PHP
PHP简单读取xml文件的方法示例
Apr 20 #PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 #PHP
PHP实现根据数组的值进行分组的方法
Apr 20 #PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 #PHP
You might like
MySql中正则表达式的使用方法描述
2008/07/30 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python二进制文件的转译详解
2019/07/03 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python中几种自动微分库解析
2019/08/29 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python多线程的退出控制实现
2020/08/10 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
Linux的主要特性
2014/10/06 面试题
团组织关系介绍信
2014/01/12 职场文书
作弊检讨书
2015/01/27 职场文书
英语导游词
2015/02/13 职场文书
学习与创新自我评价
2015/03/09 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL