实例讲解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 相关文章推荐
php 在线打包_支持子目录
Jun 28 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php两种无限分类方法实例
Apr 21 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 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中使用unset销毁变量并内存释放问题
2012/07/05 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
js css后面所带参数含义介绍
2013/08/18 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
python中range()与xrange()用法分析
2016/09/21 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
巴西宠物商店:Cobasi
2019/04/19 全球购物
机关门卫岗位职责
2013/12/30 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
小学生期末评语大全
2014/04/21 职场文书
人力资源管理求职信
2014/08/07 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
教师节祝酒词
2015/08/11 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python