实例讲解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获取金书网的书名的实现代码
Jun 11 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php判断并删除空目录及空子目录的方法
Feb 11 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
详解PHP中的PDO类
Jul 06 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
joomla数据库操作示例代码
Jan 06 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
PDO::quote讲解
Jan 29 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 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脚本数据库功能详解(中)
2006/10/09 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
javascript add event remove event
2008/04/07 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
餐饮加盟计划书
2014/01/10 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
学校师德承诺书
2014/05/23 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
农业生产宣传标语
2014/10/08 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
四十九个javascript小知识实用技巧
2021/11/20 Javascript