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操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
浅谈php提交form表单
Jul 01 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 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
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
Vue异步加载about组件
2017/10/31 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
对python多线程与global变量详解
2018/11/09 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python tkinter实现日期选择器
2021/02/22 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
旷课检讨书大全
2014/01/21 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
洗手间标语
2014/06/23 职场文书
师德承诺书2015
2015/04/28 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
关于保护环境的建议书
2019/06/24 职场文书
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android