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完整的日历类(CLASS)
Nov 27 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php实现文件下载更能介绍
Nov 23 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php日历制作代码分享
Jan 20 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
php使用redis的几种常见操作方式和用法示例
Feb 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
跟老齐学Python之Python安装
2014/09/12 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
护理专业个人求职简历的自我评价
2013/10/13 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
品牌推广策划方案
2014/05/28 职场文书
家庭聚会祝酒词
2015/08/11 职场文书