当前位置: 首页 > news >正文

养生网站设计阅读网站建设

养生网站设计,阅读网站建设,jsp做物流网站,如何优化网站内部链接前言 默认情况下,我们在PHP里使用echo等函数输出的内容,是不会马上发送给前端的,原因是有 buffer 的存在,buffer又分两处,一处是PHP本身的buffer,另一处是Nginx的buffer。只有当buffer满了之后&#xff0c…

前言

默认情况下,我们在PHP里使用echo等函数输出的内容,是不会马上发送给前端的,原因是有 buffer 的存在,buffer又分两处,一处是PHP本身的buffer,另一处是Nginx的buffer。只有当buffer满了之后,内容才会发送。

但有时候我们会希望输出的内容可以马上发送给前端,例如类似ChatGPT之类的应用,回答都是一个一个字的实时输出的,给用户良好的体验。

那么,怎么关闭 PHP 和 Nginx 的 buffer 呢?

环境

Nginx 1.19
PHP 7.4

解决方法

一、PHP的buffer

PHP里有两个函数可以关闭buffer缓冲,一个是ob_end_flush,一个是ob_end_clean,前者是输出缓冲区内容后关闭缓冲区,后者是销毁缓冲区内容直接关闭。

但即使我们关闭了 PHP 的缓冲区,每次输出完内容也还是要手动 flush 的,例如:

echo 'Hello World';
flush();

每次echo完都要调用一次flush函数,太麻烦了,此时我们可以使用ob_implicit_flush函数来解决这个问题。

二、Nginx的buffer

Nginx有两种方法关闭缓冲区,第一种是改Nginx的配置文件:
在这里插入图片描述
加上图中红色框的配置指令就可以。

这种改配置文件的方法影响范围会比较大,会导致所有的PHP请求都会关闭缓冲区,不太推荐。

第二种方法是在 PHP 里输出 HTTP 响应头,只要在响应头里加上一个X-Accel-Buffering: no,Nginx看到此响应头就会放弃使用buffer缓冲。由于这种方法是通过代码来控制,所以影响范围我们可以自由操控,推荐使用。

PHP代码示例

function stream()
{// 如果缓冲区没有开启,直接调用ob_end_clean()会报错的,要先判断缓冲区有没有开启// 如果ob_get_contents()不是返回false,说明有开启缓冲区(ob_start())$buf = ob_get_contents();if ($buf !== false) {// 输出header前,不能有任何输出内容,否则会报错,所以缓冲区里的内容要全部清空ob_end_clean();}ob_implicit_flush(); // 每次输出后都自动flush,这样就不需要咱们手动flush了// 输出header,让Nginx不要使用bufferheader('X-Accel-Buffering: no');// 每隔一秒输出一个数字for ($i = 0; $i < 10; $i++) {echo "$i\n";sleep(1);}
}stream();

在 PowerShell 命令行中访问此页面,可以看到数字会一个一个的实时显示出来:
在这里插入图片描述

为什么要在命令行中访问?
答:因为有部分前端程序也是有自己的缓冲区的,即使后端实时输出内容了,前端也不会马上显示出来,为了避免这种问题,使用命令行来访问就很适合了。

http://www.yayakq.cn/news/688680/

相关文章:

  • wordpress注册模板下载地址在运营中seo是什么意思
  • 电子商务网站开发问题研究智邦国际erp系统官网
  • 企业网站建设项目计划书公司自己的网站叫什么
  • 可以做相册的网站公司名称变更说明函
  • 临沂网站推广网订率推广技巧
  • 养殖场网站模板.net响应式网站模板
  • 网页设计与网站建设标准数据网页版浏览器在线使用
  • 网站建设必备条件免费空间网
  • 网站快速有排名wordpress站点被删
  • 自己做的网页怎么上传到网站吗全国大学生创业大赛
  • wordpress整站无刷新广州手机端网站制作
  • asp建设网站怎么用织梦做本地网站
  • 工作站做网站长沙人才招聘网官网网址
  • 大兴高米店网站建设ajax wordpress地址
  • 购物网站建设前的市场分析搜索企业的软件
  • 西安微官网自助建站公司学做网站的视频教学
  • 山东省建设厅网站一体化平台工程建设网站
  • 云南火电建设公司网站学建网站
  • 邯山区住房和城乡建设局网站微信 公司网站 怎么做
  • 网站一定备案吗最大的免费网站建设
  • 亲子乐园网站建设规划北京网页设计公司兴田德润优惠
  • 鄂州市网站做网站千篇一律
  • 网站建设公司 成本结转网站关键字怎么分割
  • 投资建设集团网站网站建设前台后台教程
  • 网站倍攻击做网站需要人在看吗
  • iis怎么让添加的网站没有端口自己做的网站能联网吗
  • 公司做网站哪个公司做得好网站设计与网页配色实例精讲
  • 上海工程建设安全协会网站洛可可设计公司估值
  • 如何快速学会做网站源码建网站
  • 淘宝联盟推广网站怎么建设网站开发程序员招聘