实例讲解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 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
刚才在简化php的库,结果发现很多东西
Dec 31 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
php json_encode奇怪问题说明
Sep 27 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP实现简单计算器小程序
Aug 28 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
laravel-admin select框默认选中的方法
Oct 03 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
JS实现的找零张数最小问题示例
2017/11/28 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Python ZipFile模块详解
2013/11/01 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
收银员的岗位职责范本
2014/02/04 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
树转促学习心得体会
2014/09/10 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书