我正在尝试进行AJAX调用(通过JQuery),这将启动一个相当长的过程。我希望脚本仅发送一个指示进程已开始的响应,但是JQuery在PHP脚本运行完成之前不会返回响应。
我已经尝试过使用“关闭”标头(如下),以及输出缓冲了。似乎都不起作用。有什么猜想吗?还是我需要在JQuery中做这件事?
<?php
echo( "We'll email you as soon as this is done." );
header( "Connection: Close" );
// do some stuff that will take a while
mail( 'dude@thatplace.com', "okay I'm done", 'Yup, all done.' );
?>
以下PHP手册页(包括用户注释)建议了有关如何在不结束PHP脚本的情况下关闭与浏览器的TCP连接的多种说明:
据说它比发送关闭标头还需要更多。
然后 , OP确认:是的 ,这成功了: 指向复制到此处的用户注释#71172(2006年11月):
自[PHP]
4.1起,在保持php脚本运行的同时关闭用户浏览器连接一直是一个问题,当时该行为已register_shutdown_function()
被修改为不会自动关闭用户连接。邮件点xubion点hu的sts发表了原始解决方案:
<?php header("Connection: close"); ob_start(); phpinfo(); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); sleep(13); error_log("do something in the background"); ?>
其中,直到你代替工作正常
phpinfo()
进行echo('text I want user to see');
在这种情况下,头永远不会发送!解决方案是在发送标题信息之前显式关闭输出缓冲并清除缓冲区。例:
<?php ob_end_clean(); header("Connection: close"); ignore_user_abort(true); // just to be safe ob_start(); echo('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Strange behaviour, will not work flush(); // Unless both are called ! // Do processing here sleep(30); echo('Text user will never see'); ?>
仅仅花了3个小时试图弄清楚这个问题,希望对您有所帮助:)
经过测试:
- IE 7.5730.11
- Mozilla Firefox 1.81
随后,在2010年7月, Arctic Fire 在一个相关的答案中,
将以上两个后续的用户注释链接到了上面的一个: __
问题内容: 我正在使用长轮询的客户端实现: 是否有一种标准方法可以从客户端抢占/取消请求? 我想调用会做到这一点,但是我不得不从另一个goroutine调用它,因为通常在读取长轮询的响应时,客户端通常已经被阻塞。 我知道有一种方法可以通过设置超时,但是我的应用逻辑需要根据用户操作(而不只是超时)进行取消。 问题答案: 不,client.Post是90%不需要取消请求的用例的便捷包装。 重新实现您的
null 请参见REST API服务器的代码 REST客户端的代码 我从我的Spring Boot Main方法调用这个类为
我编写了以下代码来连接到Oracle数据库。这用于REST API。我正在连接的数据库的IDLE_TIME参数设置为30分钟(这不能更改)。如果数据库连接空闲超过30分钟,则会抛出以下错误:“java.sql.SQLRecoverableException: ClosedConnection”。抛出此错误后,API将停止工作。我如何解决这个问题?
我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)
问题内容: 这是我要运行的示例代码: 有没有一种方法可以运行此方法而又不会从MySQL收到“ Too many connections”错误?我已经知道我可以以其他方式处理连接或拥有连接池。我只想了解如何正确关闭sqlalchemy的连接。提前致谢! 问题答案: 这是正确编写该代码的方法: 也就是说,是连接 工厂 和连接 池 ,而不是连接本身。当您说时,连接将 返回到Engine内的连接池 ,而实
问题内容: 我试图了解哪些是应用程序的“物理”限制。 在客户端: 在服务器端: 在OSX中达到文件限制(256)时,统计信息如下 让我感到困惑的是: 如果我强行关闭连接(这是我想对客户端执行的操作,为什么我仍在使用文件句柄(因此达到文件限制),请执行以下操作:编辑:添加延迟似乎使服务器可以保持呼吸并且永远不会达到文件限制)? 有没有一种方法可以完全关闭套接字,以便可以确定很少达到文件限制(我知道可