实例讲解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 Sql Server连接失败问题及解决办法
Aug 07 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
php多文件上传实现代码
Feb 20 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
坏狼的PHP学习教程之第1天
2008/06/15 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
javascript中this指向详解
2016/04/23 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python检测服务器端口代码实例
2019/08/31 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
施工班组长岗位职责
2014/01/05 职场文书
李敖北大演讲稿
2014/05/24 职场文书
花坛标语大全
2014/06/30 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
MySQL RC事务隔离的实现
2022/03/31 MySQL