实例讲解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 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
php页面缓存方法小结
Jan 10 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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/11/23 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
一个JS翻页效果
2007/07/23 Javascript
Script的加载方法小结
2011/01/12 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
Js面试算法详解
2018/04/08 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python中的迭代器漫谈
2015/02/03 Python
python中property和setter装饰器用法
2019/12/19 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
质检部岗位职责
2013/11/11 职场文书
国窖1573广告词
2014/03/21 职场文书
法院授权委托书范文
2014/08/02 职场文书
清洁工工作总结
2015/08/11 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS