实例讲解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 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
PHP合并两个或多个数组的方法
Jan 20 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 在文件指定行插入数据的代码
2010/05/08 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
PHP7变量处理机制修改
2021/03/09 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
JS实现图片预加载无需等待
2012/12/21 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
使用Python更换外网IP的方法
2018/07/09 Python
Python 字符串换行的多种方式
2018/09/06 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
医生个人自我剖析材料
2014/10/08 职场文书
社区服务理念口号
2015/12/25 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
MySQL索引失效的典型案例
2021/06/05 MySQL
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis