需求描述:

客户端访问php文件,php需要做某个耗时的操作。

例如:访问远程接口数据 而客户端不需耗时操作的结果只期望快速得到输出.

php本身是不支持异步操作的,可以用子进程的方式模拟异步操作执行,但实现起来比较复杂而且只支持linux平台。

本节分享一个简单的伪异步执行方案:

利用http的特性,强制输出 connection close的header,让浏览器认为服务端已经执行完毕,从而直接断开链接显示出结果。

例子,php异步执行实例代码。

复制代码 代码示例:

ignore_user_abort();  //保证客户端断开连接后程序依然正常执行

ob_start();  //开启输出缓冲  header可以在输出之后执行

header('Connection: close');  //输出header

echo('test');  //输出内容

$size = ob_get_length();

header("Content-Length: $size");

ob_end_flush(); //输出缓冲

flush(); //输出缓冲

foreach($i=0;$i<5;$i++)

file_get_contents("http://www.jbxue.com");//执行 耗时操作

?>

代码说明:

用循环抓取5次百度的首页来模拟耗时的操作。

执行之后,浏览器几乎瞬间显示出服务端的输出test。

而且不会显示页面一直在加载中的状态,也就是服务端先把输出结果返回给客户端,客户端不用再等待,循环5次,抓取脚本学堂首页的代码执行完才能看到结果。

以上通过一个变通的办法,实现了php代码的异步执行,确实不错,值得学习参考。

php异步方案,php 伪异步执行实现方法相关推荐

  1. php异步方案,PHP的异步实现方式

    [TOC] 方法 fastcgi_finish_request() 此函数冲刷(flush)所有响应的数据给客户端并结束请求. 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行,此函数需要f ...

  2. 美多商城之验证码(异步方案)

    三.异步方案RabbitMQ和Celery 3.1 生产者消费者设计模式  [替换之前重写的send_flag代码] 思考: 下面两行代码存在什么问题? 问题: 我们的代码是自上而下同步执行的. 发送 ...

  3. JDK 伪异步编程(线程池)

    伪异步IO编程 BIO主要的问题在于每当有一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端链路,一个线程只能处理一个客户端连接.在高性能服务器应用领域,往往需要面向成千上万个客户 ...

  4. Netty从入门到精通-伪异步I/O编程

    导语   为了解决BIO面临的一个请求链路需要一个处理线程的问题,然后对其线程模型做了优化,后端通过线程池来对多个客户端请求进行接入处理,形成么客户端M线程池最大线程数N的处理比例关系,但这其中还是M ...

  5. BIO、伪异步 IO、AIO和NIO

    BIO 采用 BIO 通信模型的服务端, 通常由一个独立的 Acceptor 线程负责监听客户端的连接, 它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理, 处理完成之后, 通过输出 ...

  6. java 异步模型_Java IO编程全解(三)——伪异步IO编程

    为了解决同步阻塞I/O面临的一个链路需要一个线程处理的问题,后来有人对它的线程模型进行了优化,后端通过一个线程池来处理多个客户端的请求接入,形成客户端个数M:线程池最大线程数N的比例关系,其中M可以远 ...

  7. 【3月15日】BIO、伪异步IO以及NIO编程实践

    1.引言 从java的I/O体系发展的历史看,先有java.io,后有java.nio.前者一般称之为IO,后者称之为NIO(New IO).但是又由于其特性前者又成为BIO(Block IO),后者 ...

  8. c++ 异步下获取线程执行结果_异步编排(CompletableFuture异步调用)

    1.问题背景 问题:当查询接口较复杂时候,数据的获取都需要远程调用,必然需要花费更多的时间. 假如查询文章详情页面,需要如下标注的时间才能完成: 那么,用户需要4s后才能统计的数据.很显然是不能接受的 ...

  9. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )

    文章目录 一.FutureTask 使用流程 二.FutureTask 模拟 AsyncTask 执行过程 三.AsyncTask 执行过程回顾 四.FutureTask 分析 一.FutureTas ...

最新文章

  1. 2022-2028年中国文化创意产业园区域发展模式与产业整体规划研究报告
  2. 算法之递归(3)- 链表操作
  3. php image mask,PHP GD使用一个图像来遮蔽另一个图像,包括透明度
  4. php text留言本,PHP+TEXT留言本(五)
  5. 79. 单词搜索(dfs)
  6. unity之中级工程师
  7. MySQL5.7 常用系统表大全
  8. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity
  9. Java类类getClassLoader()方法及示例
  10. “开发人”注意了!百度AI快车道成都站:来了就不想走的活动
  11. DB2计划三招“破甲” IBM在华能否得偿所愿
  12. [导入]2008李幼斌电视剧力作《我是太阳》全42集
  13. error LNK2019: 无法解析的外部符号 ,该符号在函数 中被引用
  14. python音乐播放器代码_Python简易音乐播放器
  15. 计算机网络原理-韩立刚-第四章 网络层
  16. SpringBoot调用腾讯云短信服务
  17. Java图片高保真缩放工具类
  18. delphi mysql 加密_Delphi纯代码连SQLite数据库,同时支持数据库的加密解密
  19. Minecraft 1.12.2模组开发(二十一) 物品点击事件(发射火球、召唤生物)
  20. 温度滞回程序C语言,滞回比较器在温度控制器中的作用

热门文章

  1. mySQL教程 第7章 存储过程和函数
  2. [置顶] 任务三 主题、样式
  3. 从几个版本的memcpy的测速过程学习一点底层的东西
  4. DotNet程序员是不是最不幸福?
  5. ORACLE 小时值必须介于1和12之间 解决方法
  6. python使用ssh 中文_Python3制作简易SSH登录工具
  7. java 责任链模式 链表_责任链模式的实现及源码中应用
  8. 奥鹏东北大学作业答案计算机网络,东北大学17秋学期《计算机网络》在线作业1参考答案...
  9. php 远程图片合拼,PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】...
  10. java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件