php中可以实现多线程,是一种利用旧的exec函数通过异步处理方法实现多线程的,exec函数本身就是一个执行外部程序的php函数。下面我们就来具体看看php多线程的实现方法。

我们首先来看一个示例<?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

此外,对于线程安全安装,您需要使用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 开启多线程_php如何实现多线程相关推荐

  1. python多线程爬虫实例-Python多线程在爬虫中的应用

    题记:作为测试工程师经常需要解决测试数据来源的问题,解决思路无非是三种:(1)直接从生产环境拷贝真实数据 (2)从互联网上爬取数据 (3)自己用脚本或者工具造数据.前段时间,为了获取更多的测试数据,笔 ...

  2. ios多线程Android,iOS 关于多线程

    一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如:同时打开QQ,Xcode,系统就会分别启动2个进程 通过 ...

  3. python多线程单核_002_Python多线程相当于单核多线程的论证

    很多人都说python多线程是假的多线程!下面进行论证解释: 一. 我们先明确一个概念,全局解释器锁(GIL) Python代码的执行由Python虚拟机(解释器)来控制.Python在设计之初就考虑 ...

  4. 多线程Thread类创建多线程

    package com.ajax; //多线程Thread类创建多线程 public class Example02 {public static void main(String[] args){n ...

  5. 易语言大漠多线程易语言大漠多线程

    511遇见易语言-多线程-大漠-大漠多线程 511遇见易语言多线程大漠多线程-1进程线程多线程 511遇见易语言多线程大漠多线程-2中转子程序传多参 511遇见易语言多线程大漠多线程-3线程传参数据变 ...

  6. python web框架 多线程和多进程_python 多线程和多进程

    多线程与多进程 知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景: ...

  7. [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)...

    [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...

  8. python多线程没用_python的多线程到底有没有用?

    在群里经常听到这样的争执,有人是虚心请教问题,有人就大放厥词因为这个说python辣鸡.而争论的核心无非就是,python的多线程在同一时刻只会有一条线程跑在CPU里面,其他线程都在睡觉.这是真的吗? ...

  9. 异步多线程(五)多线程异常处理

    异步多线程(五)多线程异常处理 参考文章: (1)异步多线程(五)多线程异常处理 (2)https://www.cnblogs.com/JohnTang/p/11010357.html (3)http ...

最新文章

  1. HTTP缓存——304与200 from cache
  2. [二十五]JavaIO之RandomAccessFile
  3. 云计算使关系数据库逐渐落伍(转载)
  4. RabbitMQ中的虚拟主机、交换机、消息队列、绑定、消息
  5. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
  6. 清理c盘垃圾的cmd命令_用命令删除系统垃圾,这波操作深藏功与名
  7. 美团AI全景图:吃喝玩乐背后的黑科技
  8. 【小技巧】桌面图标出现蓝色问号的怎么办?
  9. WebView 文档 翻译
  10. python和jupyter安装
  11. python中copytree的用法_python复制文件的方法实例详解
  12. Pandas如何检测None和Nan
  13. 中心极限与大数定理律的关系_中心极限定理的最最通俗解释
  14. 对linux安装中文字体库
  15. 使用正交表法设计测试用例
  16. vue 项目 跨域问题
  17. java.lang.NumberFormatException: For input string: “22-02-22 07:13:3
  18. Win10找不到gpedit.msc|找不到本地组策略编辑器的解决方法
  19. 趣味小游戏——扫雷(优化版)
  20. 昨天学了js的控制css样式,自己做了个算卦小程序

热门文章

  1. 2015计算机二级java真题_2015年计算机二级考试java试题
  2. java 批量替换字符串_# Java 一步一步实现高逼格的字符串替换工具(二)
  3. easyexcel导入简单封装
  4. e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗
  5. python怎么读取github_如何通过Python模拟登陆Github?
  6. linux查cpu命令4可以选择哪些运动,Linux 查看cpu 信息的命令及简单实例
  7. java 程序是由什么组成的 java_【问答题】一个典型的JAVA程序结构是由什么组成。...
  8. mac安装和卸载mysql_mysql的安装与卸载
  9. linux云自动化运维,linux云自动化系统运维17(延时服务及定时服务)
  10. java中volatile关键字的含义_Java里volatile关键字是什么意思