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面向对象分析设计的61条军规小结
Jul 17 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
简单的php新闻发布系统教程
May 09 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
PHP实现简单日历类编写
Aug 28 PHP
PHP基于进程控制函数实现多线程
Dec 09 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/02/03 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
sqlalchemy对象转dict的示例
2014/04/22 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
python邮件发送smtplib使用详解
2020/06/16 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python的slice notation的特殊用法详解
2019/12/27 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
感恩节活动方案
2014/01/27 职场文书
汽车转让协议书范本
2014/12/07 职场文书
个人典型事迹材料
2014/12/30 职场文书
售后服务承诺函格式
2015/01/21 职场文书
博士导师推荐信
2015/03/25 职场文书