实例讲解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 05 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
php发送与接收流文件的方法
Feb 11 PHP
php中return的用法实例分析
Feb 28 PHP
为你总结一些php系统类函数
Oct 21 PHP
php 获取文件行数的方法总结
Oct 11 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
Python fileinput模块使用实例
2015/05/28 Python
Python读写配置文件的方法
2015/06/03 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python中格式化字符串的四种实现
2020/05/26 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
JDO的含义
2012/11/17 面试题
.net笔试题
2014/03/03 面试题
企划经理的岗位职责
2013/11/17 职场文书
自我推荐书
2013/12/04 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
社会实践活动总结格式
2015/05/11 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
经营场所使用证明
2015/06/19 职场文书
消费者理赔投诉书
2015/07/02 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
python通过函数名调用函数的几种方法总结
2021/06/07 Python