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
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
php数组随机排序实现方法
Jun 13 PHP
使用URL传输SESSION信息
Jul 14 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 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学习之数组值的操作
2011/04/17 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
jQuery操作cookie
2016/08/08 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
对pyqt5之menu和action的使用详解
2019/06/20 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
给海归自荐信的建议
2013/12/13 职场文书
年度考核自我评价
2014/01/25 职场文书
购房意向书范本
2014/04/01 职场文书
挂靠协议书范本
2014/04/22 职场文书
多媒体教室标语
2014/06/26 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
西安大雁塔导游词
2015/02/10 职场文书
员工自我评价范文
2015/03/11 职场文书
换届选举主持词
2015/07/03 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL