PHP7多线程搭建教程
一直想写个爬虫,于是就用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使用Pthread实现的多线程操作实例
本文实例讲述了PHP使用Pthread实现的多线程操作.分享给大家供大家参考,具体如下: <?php class vote extends Thread { public $res = ''; public $url = array(); public $name = ''; public $runing = false; public $lc = false; public function __construct($name) { $this->res = '暂无,第一次运行.'; $th
-
PHP多线程编程之管道通信实例分析
本文实例讲述了PHP多线程编程之管道通信用法.分享给大家供大家参考.具体分析如下: 一个线程如果是个人英雄主义,那么多线程就是集体主义,你不再是一个独行侠,而是一个指挥家. 管道通信: 1. 管道可以认为是一个队列,不同的线程都可以往里面写东西,也都可以从里面读东西.写就是 在队列末尾添加,读就是在队头删除. 2. 管道一般有大小,默认一般是4K,也就是内容超过4K了,你就只能读,不能往里面写了. 3. 默认情况下,管道写入以后,就会被阻止,直到读取他的程序读取把数据读完.而读取线程也会
-
PHP安装threads多线程扩展基础教程
一.下载pthreads扩展 下载地址:http://windows.php.net/downloads/pecl/releases/pthreads 二.判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版. 三.根据PHP ts\nts版选择对应pthreads的版本 本人php版本是5.4.17的所以下载php_pthreads-0.1.0-5.4-t
-
php多线程实现方法及用法实例详解
下面我们来介绍具体php多线程实现程序代码,有需要了解的同学可参考. 当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl. 其实的是大多数情况下,你大可不必使用fork 或者线程,并且你会得到比用fork 或thread 更好的性能. 假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转.你可能会写下面这样的代码: 代码如下 <?php $hosts = ar
-
php异步多线程swoole用法实例
本文实例讲述了php异步多线程swoole用法.分享给大家供大家参考.具体分析如下: swoole重新定义PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务,下面的实例就可以证实这一功能. 一般来说,Swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询. swoole以前听过, 拿来做游戏服务器简直是神器-今天稍微的感受了一下, 在 ubuntu 下搭建了
-
PHP多线程类及用法实例
本文实例讲述了PHP多线程类及用法.分享给大家供大家参考.具体分析如下: 一般来说可通过WEB服务器来实现PHP多线程功能,当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的,在需要类似多线程的功能方面还是可以采用这个类,代码如下: 复制代码 代码如下: /** * @title: PHP多线程类(Thread) * @version: 1.0 * * PHP多线程应用示例: * requ
-
如何解决PHP无法实现多线程的问题
有没有办法在PHP中实现多线程呢?假设你正在写一个基于多台服务器的PHP应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台.可以实现吗?当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现PHP不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如Perl. 假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转.你可能会写下面这样的代码: $hosts = array("host1.sample.com",
-
php三种实现多线程类似的方法
1.curl_multi方法 当需要多线程的时候,可以用curl_multi一次性请求多个操作来完成,但curl走的是网络通信,效率与可靠性就比较差了的. function main(){ $sql = "select waybill_id,order_id from waybill where status>40 order by update_time desc limit 10 "; $data = Yii::app()->db->createCommand($
-
PHP7多线程搭建教程
一直想写个爬虫,于是就用PHP写了一个,众所周知PHP并不支持多线程,所以爬行效率很低,同时运行10个进程,内存和CPU占用率很高,开大概10个进程爬行,对爬行时间还进行优化,但我的mac pro还是差不多就down掉了. 于是开始采用PHP7结合pthreads多线程工具,经测试,稳定性.效率.内存和cpu的占用各方面都很满意. 下边就介绍PHP7的多线程环境搭建. 安装PHP7 以下所有命令在root用户下执行 下载PHP7,目前最新版本是7.0.3,根据情况自行选择版本,PHP5.4以后的
-
Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: https://windows.php.net/downloads/releases/php-7.3.11-nts-Win32-VC15-x64.zip 2.MySQL下载地址: https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installe
-
vue.js开发环境搭建教程
vue.js开发环境搭建教程分享,具体内容如下 1.安装node.js,忽略 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd里直接输入:npm install -g cnpm –-registry=https://registry.npm.taobao.org,回车,等待安装... 3.安装全局vue,用于帮助搭建所需的模板框架 在cmd里, 1).输入:cnpm install -g vue-cli,回车,等待安装... 2).输入:vue -V,回车,若出现vue信息说明表
-
windows server 2008/2012安装php iis7 mysql环境搭建教程
windows server 2008/2012安装php iis7 mysql环境搭建教程,具体内容如下 1.安装IIS windows server 2008的IIS版本为7.0,包括fastcgi,安装十分方便. 打开"开始"菜单→"服务器管理",出现服务器管理界面(图1) 图1 - 服务器管理 滚动条下翻,或者点击主菜单的"角色",然后点击"添加角色",出现向导页面后点击下一步,选择"web服务器(IIS)&
-
微信小程序访问node.js接口服务器搭建教程
前言 最近在做微信的应用号小程序开发,小程序的后台数据接口需要https安全请求,所以需要我的nodejs服务器能够提供https的支持,现在就将整个https服务器的搭建过程说一下. 搭建教程如下: 首先,我试了一下以前的过期的证书,在开发者工具里模拟的时候可以正常访问接口,在手机里测试时候微信小程序的wx.request是会报SSL握手失败的错误(request error : request: fail ssl hand shake error),所以只能重新申请一个证书,这里推荐使用阿里
-
Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2008 R2 PHP版本:php 5.4.4 MySQL版本:MySQL5.5.25 二.相关软件下载: 1.PHP下载地址: http://windows.php.net/downloads/releases/php-5.4.4-nts-Win32-VC9-x86.zip 2.MySQL下载地址: http://gd.tuwien.ac.at/db/mysql/Downloads/MySQLInstaller/mysql-ins
-
Tomcat服务器搭建教程
分享Tomcat服务器搭建教程,具体如下 第一步:Tomcat 的下载 官方下载网址为:http://tomcat.apache.org/下载界面如下:选则Download下你要安装的版本进行下载. 第二步:安装Tomcat 1:环境设置 下载的是windows安装版,直接点击即可安装,但在安装前必须要进行环境设置–>设置Tomcat运行时依赖的JDK/JRE. JDK设置方法:选择我的电脑->属性->高级系统设置->环境变量->用户变量下选择"新建" 如
-
Visual Studio 2017+OpenCV环境搭建教程
OpenCV环境搭建教程分享,供大家参考,具体内容如下 OpenCV包准备 下载地址:http://opencv.org/downloads.html 在官网上随便找一个Sample: http://docs.opencv.org/3.2.0/examples.html 1: 2: 3:拷贝官网的代码:ffilldemo.cpp 呀!!怎么报这么多错,看看提示原来是无法找到opencv的源文件.那么,少了, 我们就加上吧 添加好了之后又发现: 需要以下设置: 设置后发现还有问题: 设置后发现还是
-
VS2017 Cordova Ionic2 移动开发环境搭建教程
分享VS2017 Cordova Ionic2 移动开发环境搭建教程 1. 文档概述 本文档用于说明Visual Studio 2017下使用 Ionic 2进行跨平台开发的运行环境配置. 2. 安装环境 Windows10 3. 安装Visual Studio 2017community 3.1 官方下载地址:https://www.visualstudio.com/downloads/ 3.2 运行安装程序,需选中使用JavaScript的移动开发,如下图所示. 3.3 进行VS2017扩展
-
mysql 5.7 docker 主从复制架构搭建教程
分享mysql 5.7 docker 主从复制架构搭建教程,供大家参考,具体内容如下 环境版本: MySQL : 5.7.13 Docker : 1.11.2 CentOS : 7.1 1.先在两个物理机上分别安装两个MySQL.命令如下 复制代码 代码如下: docker pull mysql:5.7.13 docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.13 2.
随机推荐
- 详解在 Angular 项目中添加 clean-blog 模板
- JavaScript对JSON数据进行排序和搜索
- asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明
- 手把手教你用Hexo+Github搭建属于自己的博客(详细图文)
- PowerShell把IP地址转换成二进制的方法
- bat批处理彻底隐藏文件的方法(使用虚拟磁盘实现)
- Redis教程(九):主从复制配置实例
- 点击button获取text内容并改变样式的js实现
- 在Windows8上的搭建Python和Django环境
- C++非递归队列实现二叉树的广度优先遍历
- MySQL数据类型和常用字段属性总结
- JS触发服务器控件的单击事件(详解)
- 根据一段代码浅谈Javascript闭包
- Ruby中操作文件的方法介绍
- python实现汉诺塔方法汇总
- jquery控制listbox中项的移动并排序
- 原生js实现简单的链式操作
- Vue2.0 vue-source jsonp 跨域请求
- 详解阿里云nginx服务器多站点的配置
- Spring Boot JPA如何把ORM统一起来