实例讲解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 相关文章推荐
与数据库连接
Oct 09 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
为你总结一些php系统类函数
Oct 21 PHP
php htmlentities()函数的定义和用法
May 13 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
php 可变函数使用小结
Jun 12 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python实现LRU算法的2种方法
2015/06/24 Python
Python heapq使用详解及实例代码
2017/01/25 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
Python实现一个论文下载器的过程
2021/01/18 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
优秀村官事迹材料
2014/01/10 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
python 调用js的四种方式
2021/04/11 Python
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers