实例讲解php实现多线程


Posted in PHP onJanuary 27, 2019

我们首先来看一个示例

<?php
 
class execMulti {
 function MultithreadTest {
  exec("php static_massive.php > /dev/null &");
 
  echo "处理完成了";
 }
}
?>

当执行上述操作时,即使在耗时的处理结束之前也显示处理完成。

exec("php static_massive.php > /dev/null &");

由于“ > / dev / null& ”返回的值丢失,我们不会等待响应。

因此,处理完成指示比耗时处理更快。

但是,该方法不知道耗时的处理何时结束。

不要忘记考虑采取日志的执行,登录DB等方法向用户传递执行结果。

用于多线程的方法(pthreads)

最后,介绍使用PHP扩展模块pthreads的方法。

它可以比上面使用exec的方法更简单。

①配置环境并安装php

请使用vagrant等准备喜欢的环境。

php 需要使用线程安全版本,这是多线程和安全的实现。

从官方下载线程安全版本的 PHP。

访问以下内容并从图中的红框下载。

http://www.php.net/downloads.php

实例讲解php实现多线程

此外,对于线程安全安装,您需要使用configure选项指定-enable-maintainer-zts。

./configure --enable-maintainer-zts

根据需要,也可以安上Apache和mysql的选项。

用以下命令确认了php的版本就可以了。

php -v

②pthreads的安装

我们来下载zip格式。

https://github.com/krakjoe/pthreads/archive/master.zip

解压zip,移动到解压缩文件,然后执行phpize。

如果您在PHP模块列表上运行pthreads,则可以执行以下操作。

php -m

根据环境的不同,这一块的设定也会有所不同,可以用环境名+pthreads等进行检索来寻找信息。

③尝试使用多线程

示例如下

<?php
class pthreadsTest extends Thread {
 public function run () {
  sleep(5);
 }
}
$ts1 = new pthreadsTest();
$ts1->start(); 
$ts2 = new pthreadsTest();
$ts2->start(); 
?>

因为sleep(5)被调用两次,所以需要10秒,但实际上它将是5秒。

PHP 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
关于php mvc开发模式的感想
Jun 28 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
php建立Ftp连接的方法
Mar 07 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
php扩展开发入门demo示例
Sep 23 PHP
php中访问修饰符的知识点总结
Jan 27 #PHP
实例讲解php将字符串输出到HTML
Jan 27 #PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 #PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 #PHP
PHP的PDO事务与自动提交
Jan 24 #PHP
PHP的PDO连接讲解
Jan 24 #PHP
PHP的PDO预定义常量讲解
Jan 24 #PHP
You might like
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
一个JS翻页效果
2007/07/23 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
Vue响应式原理详解
2017/04/18 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现键盘控制鼠标移动
2020/11/27 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
军训的自我鉴定
2013/12/10 职场文书
服装厂厂长岗位职责
2013/12/27 职场文书
英语国培研修感言
2014/02/13 职场文书
预备党员转正考核材料
2014/06/03 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
公司委托书格式范文
2014/10/09 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
Go语言基础map用法及示例详解
2021/11/17 Golang
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫