实例讲解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 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
php eval函数用法总结
Oct 31 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
6个超实用的PHP代码片段
Aug 10 PHP
php实现简单的上传进度条
Nov 17 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP strripos函数用法总结
Feb 11 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
asp.net和php的区别点总结
Oct 10 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生成随机数或者字符串的代码
2008/09/05 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Python MD5文件生成码
2009/01/12 Python
python optparse模块使用实例
2015/04/09 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
构造方法和其他方法的区别
2016/04/26 面试题
岗位职责风险防控
2014/02/18 职场文书
平面设计求职信
2014/03/10 职场文书
公司总经理任命书
2014/06/05 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
中学团支部工作总结
2015/08/13 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
js Proxy的原理详解
2021/05/25 Javascript
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技