非阻塞模式是指利用socket事件的消息机制,Server端与Client端之间的通信处于异步状态。

让PHP不再阻塞当PHP作为后端处理需要完成一些长时间处理,为了快速响应页面请求,不作结果返回判断的情况下,可以有如下措施:

一、若你使用的是FastCGI模式,使用fastcgi_finish_request()能马上结束会话,但PHP线程继续在跑。

这个例子输出结果可看到输出program start.后会话就返回了,所以debug那个输出浏览器是接收不到的,而log.txt文件能完整接收到三个完成时间。

二、使用fsockopen、cUrl的非阻塞模式请求另外的网址

利用cURL中的curl_multi_*函数发送异步请求

三、使用Gearman、Swoole扩展

Gearman是一个具有php扩展的分布式异步处理框架,能处理大批量异步任务;

Swoole最近很火,有很多异步方法,使用简单。(尘缘注:号称重新定义PHP,把NodeJS喷得体无完肤。Swoole工具虽好,却感觉是扩展本身跟NodeJS没可比性)

四、使用redis等缓存、队列,将数据写入缓存,使用后台计划任务实现数据异步处理。

这个方法在常见的大流量架构中应该很常见吧

五、极端的情况下,可以调用系统命令,可以将数据传给后台任务执行,个人感觉不是很高效。

六、外国佬的大招,没看懂,php原生支持

七、安装pcntl扩展,使用pcntl_fork生成子进程异步执行任务,个人觉得是最方便的,但也容易出现zombie process。

以上内容是小编给大家介绍的PHP非阻塞模式,希望对大家有所帮助!

非阻塞式编程 php,简单介绍PHP非阻塞模式相关推荐

  1. Spring WebFlux异步非阻塞式编程

    一.什么是 Spring WebFlux Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程 ...

  2. Socket编程之简单介绍 - 蓝天下的雨 - 博客园

    Socket编程之简单介绍 - 蓝天下的雨 - 博客园 Socket编程之简单介绍 - 蓝天下的雨 - 博客园 Socket编程之简单介绍 2013-03-19 15:27 by 蓝天下的雨, 878 ...

  3. 举出其他监督学习,无监督学习,强化学习的例子?说一下非显著式编程的优势?AlphaGo的胜利,带给我们什么样的人生启示?当代大学生如何在人工智能时代增加自己的核心竞争力?

    (1)举出其他监督学习,无监督学习,强化学习的例子 监督学习:比如手写体识别,我们将许多汉字的手写数字图像数据作为训练数据.汉字的数据的分类目标被称作标签和类.训练数据有一个标签(某一个汉字),根据标 ...

  4. 响应式编程框架ReactiveCocoa介绍与入门

    ReactiveCocoa是Github团队开发的第三方函数式响应式编程框架,在目前市面上的很多iOS App都大量使用了这个框架.以下我简称这个框架为RAC.我下面会通过几篇博客来和大家一起学习这个 ...

  5. 微分算法 非侵入式负荷识别_一种非侵入式用电负荷识别方法与流程

    本发明涉及智能电网领域,具体地,涉及一种非侵入式用电负荷识别方法. 背景技术: 在智能电网环境下,智能量测设备会逐步得到广泛应用,从而能够得到用户负荷准确的.海量的数据.利用数据挖掘方法对用户负荷大数 ...

  6. Socket编程之简单介绍

    一:套接字编程相关知识点 Socket概念:套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机进行,也可以跨网络进行. 网络中的进程是通过socket来通信的.socket ...

  7. SPDK block device 及其编程的简单介绍

    SPDK基于用户态,轮询.异步.无锁的NVMe驱动,封装且提供了一层关于块设备 (bdev) 的库.同时,块设备支持多层抽象与集成从而实现块设备组件 (bdev module) ,因此用户也可以根据自 ...

  8. javascript设计模式简单介绍之【工厂模式】

    工厂模式分为两种,一种是简单工厂模式.另一种称之为工厂模式. 简单工厂模式是使用一个外部的单体或者静态方法来生成实例. 而工厂模式使用子类来决定内部成员要实现那个具体的类的实例. 工厂模式要求被具体实 ...

  9. php 非侵入式,Tideways和xhgui打造PHP非侵入式监控平台

    1.简介 当我们发现生产环境的某个接口执行时间特别长时应该怎么做?直接登录线上机器单步调试?打大量的log然后分析? 一般我们可以把分析流程拆分为如下几步操作: 1.分析开发环境下执行是否会慢:如果是 ...

最新文章

  1. 清华「暗黑破坏神」夺超算世界冠军,暨南大学首次参赛就跻身前三 | ISC21
  2. docker mysql忽视大小写_Docker安装MySQL忽略大小写问题的问题
  3. 2021年春季学期-信号与系统-第六次作业参考答案-第二小题
  4. follow 开源项目关于NoClassDefFoundError错误的解决方法
  5. IT信息业、金融业从业人员悲歌
  6. c语言for循环26个英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  7. 【leetcode】390. Elimination Game
  8. php 日期相减 时分秒,PHP计算两个时间戳间隔的日时分秒的代码实例
  9. Arquillian和Jboss的版本问题
  10. (C语言)用C语言编写小游戏——三子棋
  11. Will----个人资料
  12. 内存颗粒位宽和容量_DDR4内存颗粒--美光篇
  13. debussy下载及安装
  14. Python运维开发入门到精通学习 Day3
  15. Android adb shell后面可用的常用命令详细列举
  16. Arduino MEGA2560与蓝牙的通信(玄学)问题
  17. 好用的数据恢复软件EasyRecovery2023最新版
  18. 单元测试之 Xunit
  19. venue11 Android,ebay购入dell 戴尔 venue11 pro 平板电脑
  20. 数字图像处理与应用——半色调技术

热门文章

  1. iptables基本知识
  2. Office文件的Open Xml 格式
  3. Oracle HTTP 乱码
  4. Linux机器学习软件配置
  5. django的动态url,url里含有参数,含有参数的url
  6. 有标号的DAG计数 II
  7. 删除ELK中的数据。。
  8. wpf,后台触发按钮点击以及拖动
  9. [基础]sizeof和strlen
  10. 开启apache服务