实例讲解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个人网站架设连环讲(二)
Oct 09 PHP
七款最流行的PHP本地服务器分享
Feb 19 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
PHP实现的购物车类实例
Jun 17 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP设计模式之装饰器模式定义与用法详解
Apr 02 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
PHP实现本地图片转base64格式并上传
May 29 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 基本语法格式
2009/12/15 PHP
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python 文件管理实例详解
2015/11/10 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
全面了解python字符串和字典
2016/07/07 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
python抖音表白程序源代码
2019/04/07 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
入党积极分子介绍信
2014/01/17 职场文书
文艺晚会主持词
2014/03/24 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技