当前位置: 首页 > 面试题库 >

关闭连接后继续处理

吕俊才
2023-03-14
问题内容

PHP中是否可以关闭连接(本质上告诉浏览器没有更多数据可用)但是可以继续处理。我正在考虑的特定情况是,我想提供缓存的数据,然后,如果缓存已过期,我仍然会提供缓存的数据以快速响应,关闭连接,但继续进行处理以重新生成并缓存新的数据数据。本质上,唯一的目的是使网站显得更具响应性,因为在用户等待内容重新生成时不会偶尔出现延迟。

更新:

PLuS对我一直在寻找最接近的答案。为了澄清几个人,我正在寻找可以实现以下步骤的东西:

  1. 用户请求页面
  2. 连接打开到服务器
  3. PHP检查缓存是否已过期,如果仍然新鲜,则提供缓存并关闭连接(END HERE)。如果已过期,请继续执行4。
  4. 服务过期的缓存
  5. 紧密连接,因此浏览器知道它不在等待更多数据。
  6. PHP重新生成新数据并将其缓存。
  7. PHP关闭。

更新:

这很重要,它必须是纯PHP解决方案。不能安装其他软件。


问题答案:

我终于找到了解决方案(感谢Google,我只需要继续尝试搜索字词的不同组合)。

<?php
ob_end_clean();
header("Connection: close");
ignore_user_abort(true);
ob_start();
echo 'Text the user will see';
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // All output buffers must be flushed here
flush();        // Force output to client
// Do processing here 
sleep(30);
echo('Text user will never see');

我尚未进行实际测试,简而言之,您发送了两个标头:一个标头告诉浏览器确切的数据量,然后一个标头告诉浏览器关闭连接(只有在收到预期数量的标头之后才会执行此操作)内容)。我还没有测试过。



 类似资料:
  • 我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)

  • 我正在使用VS代码来编辑和运行Android项目。模拟器将打开,我看到程序启动,然后是程序的编译和运行。但是,在关闭了Android模拟器和VS代码之后,OpenJDK继续运行。 这是正常行为吗?有没有办法在模拟器/VSC退出后关闭OpenJDK JRE? 我主要关心的是电池寿命,因为我正在使用笔记本电脑。 系统:Windows 10 Pro(1909) Visual Studio代码版本:1.4

  • 问题内容: 我正在使用EF 6.1.0 我在下面将自定义DBContex对象作为DBEntites 我对上下文对象执行以下操作 但是在放置上下文对象之后,我仍然可以看到一个活动的数据库连接。在连接状态下,我可以看到该连接已经关闭(该连接从未为真)。 我正在使用以下查询来查看SQL上的连接。 在下面的语句中,增加了sql连接计数。但是即使处置了它也从未失败过。(我的意思是在使用块计算后,它应该关闭连

  • 我最近转到了一个项目,在这个项目中我遇到了很多这种性质的代码--(这是使用jdbc postgres驱动程序) 显然,这段代码已经在生产中运行了一段时间,没有引起问题。 为了进一步澄清,如果我的理解是正确的(即,statement和resultset必须在连接关闭之前而不是之后关闭),我需要在catch和finally之间重复一些代码。修订后的代码如下所示。这可以简化吗? 只是为了透视,这段代码是

  • 问题内容: 我试图了解哪些是应用程序的“物理”限制。 在客户端: 在服务器端: 在OSX中达到文件限制(256)时,统计信息如下 让我感到困惑的是: 如果我强行关闭连接(这是我想对客户端执行的操作,为什么我仍在使用文件句柄(因此达到文件限制),请执行以下操作:编辑:添加延迟似乎使服务器可以保持呼吸并且永远不会达到文件限制)? 有没有一种方法可以完全关闭套接字,以便可以确定很少达到文件限制(我知道可

  • 好吧,我是Android Studio的新手,我在玩一个愚蠢的屁噪音应用程序。我的第一次尝试是一个按钮发出噪音。现在我有三个按钮,但应用程序无法在模拟器中打开。它只说应用程序一直在关闭。我试着用谷歌搜索log cat中的每一个错误,但到目前为止没有任何效果。我尝试了两个不同的模拟器,但最初它工作得很好,所以不确定要改变什么。声音文件是。我不确定这是否重要。 这是我的原木猫 04-10 11:41: