实例讲解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入门的学习方法
Jan 02 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHP集成FCK的函数代码
2008/09/27 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
python处理json数据中的中文
2014/03/06 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python实现简单登陆流程的方法
2018/04/22 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
破解安装Pycharm的方法
2018/10/19 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
经典演讲稿汇总
2014/05/19 职场文书
语文教育专业求职信
2014/06/28 职场文书
论文答谢词
2015/01/20 职场文书
公司欠款证明
2015/06/24 职场文书