包含/要求默默地发挥作用

Joc*_*ung 3 php tomcat http include

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

include 'http://123.123.123.123:8080/servlet/statemodel'
Run Code Online (Sandbox Code Playgroud)

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

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

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

没有错误消息.使用require也不会带来任何错误消息.

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

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

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

Ger*_*der 5

你用这个设置超时:

ini_set("default_socket_timeout", $value);
Run Code Online (Sandbox Code Playgroud)

但是默认值是60秒,这应该足够了.

也许你可以找到更多:

error_reporting(E_ALL);
ini_set("display_errors", 1);
Run Code Online (Sandbox Code Playgroud)

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