首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPS PHP大的XML有效载荷没有到达回显的客户端

HTTPS PHP大的XML有效载荷没有到达回显的客户端
EN

Stack Overflow用户
提问于 2015-04-23 15:18:33
回答 1查看 59关注 0票数 0

我们的web服务正在经历一个大的问题与一些客户。web服务是SSL下的PHP,它使用GET参数在MySQL数据库上配置多个重查询,并返回一个XML有效负载。有效载荷仅为1MB,但处理非常复杂,大约需要5-6分钟才能完成。客户端是运行特定应用程序的iPad。有时,在某些网络上,客户端不会接收有效负载并一直等到超时。我们开始记录服务器上的所有内容。一个普通的response_ssl报告大约290秒来提供有效负载,但是当问题发生时,我们可以看到相同有效负载的900秒。但是,即使在900秒之后,客户端也不会接收有效负载。

在PHP脚本中,我们有一些调试日志,如下所示:

代码语言:javascript
复制
[perform long-time operation]
[create XML dom]
$xmlPayload=$dom->saveXML();
LOG: "Start print XML"
echo $xmlPayload;
LOG: "End print XML"

当问题发生时,我们可以在日志文件中找到行"Start print XML“,但是"End”从未附加到。看来php脚本退出或冻结。我们尝试在PHP中激活log_error,没有任何通知、警告或错误被记录!

我们无法访问正在经历此问题的客户端,而且客户端从未发生过(我们在每个场景中都尝试过)。在受影响的客户端上没有通用模式(不同的网络、不同的iOS版本、不同的iPad版本等等)。我们想知道如何调试这个烦人的问题!对于如何调试“冻结的”回显,有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 08:49:13

我不能完全回答你的问题,因为从你的错误描述中还不清楚会发生什么。

如果PHP崩溃,通常会有一条错误消息被记录下来(因为您启用了错误日志记录)。这方面的一个例外是分割错误,或者如果操作系统终止了通知它的进程w/o (例如,一些硬限制)。

即使我不能确切地告诉您出了什么问题,您也可以节省一些资源(如果确实存在一些困难的限制,这可能会有所帮助)。您可以通过直接将XML文档“保存”到标准输出来节省资源。这使得您不必将XML存储到一个变量中,只会在后面回显它:

代码语言:javascript
复制
[perform long-time operation]
[create XML dom]
LOG: "Start print XML"
$dom->save('php://output');
LOG: "End print XML"

这只是利用DOMDocument::save保存到一个“文件”,该文件实际上是一个标准输出(与回显使用的目标相同)的PHP流,即php://output

希望这个小小的改变会使它发挥作用,或者其他方面,它所提供的信息或它所带来的改变将为您提供更多的信息来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29827722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档