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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
php 错误处理经验分享
Oct 11 PHP
php类常量的使用详解
Jun 08 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
php中文验证码实现方法
Jun 18 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
Yii框架分页实现方法详解
May 20 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 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
十天学会php之第五天
2006/10/09 PHP
PHP源码之explode使用说明
2011/08/05 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
Python实现的三层BP神经网络算法示例
2018/02/07 Python
高效使用Python字典的清单
2018/04/04 Python
Python如何输出整数
2020/06/07 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
python 实现批量图片识别并翻译
2020/11/02 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
计算机专业大学生的自我评价
2013/11/14 职场文书
社会实践心得体会
2014/01/03 职场文书
自我评价的写作规则
2014/01/06 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
教师见习报告范文
2014/11/03 职场文书
财务会计实训报告
2014/11/05 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
通知的写法
2015/04/23 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书