3

在我的代码中,我有一个 include 语句,它从外部 URL 加载代码,如下所示:

include 'http://123.123.123.123:8080/servlet/statemodel'

问题是,servlet 需要大约 35 秒才能加载。

如果我http://123.123.123.123:8080/servlet/statemodel在浏览器中访问,一切正常(我修改了 IP,因为无论如何它都无法通过互联网访问)。

但是,使用 iclude 语句会PHP尝试大约 20 秒来包含文件,然后在 include 语句之后继续执行代码。

没有错误信息。也使用 require 不会带来错误消息。

包含超时吗?为什么没有错误信息?

也许 tomcat 实际上发送了数据(http-header),但 PHP 只等待大约 20 秒来跟随一些内容?

我可以选择更改此超时吗?

4

1 回答 1

5

你用这个设置超时:

ini_set("default_socket_timeout", $value);

但是默认值是60秒,应该绰绰有余。

也许您可以通过以下方式找到更多信息:

error_reporting(E_ALL);
ini_set("display_errors", 1);

IMO 最干净的解决方案是在提供 PHP 脚本的 HTML 之后使用 AJAX 请求加载 servlet 的内容。这样用户就可以快速获得结果,并且您可以向他展示正在加载的更多内容。

于 2012-09-11T08:20:15.687 回答