PHP通过浏览器处理soap请求的速度很慢,但在命令行上很好

PHP通过浏览器处理soap请求的速度很慢,但在命令行上很好,soap,php-5.3,php,Soap,Php 5.3,Php,我正在尝试使用PHP连接到外部SOAP服务,并编写了一个小的PHP测试脚本,它只连接到该服务,并执行一个简单的请求来检查一切是否正常 这一切都正常工作,但当我通过浏览器请求运行时,在40秒左右建立初始连接的速度非常慢。当我在命令行上使用完全相同的脚本执行相同的请求时,它会立即通过 有人知道为什么会这样吗 干杯可能是外部SOAP服务尝试检查您的IP,并且您的服务器允许ICMP,但您的本地网络不允许。 无论如何,外部SOAP服务的管理员可能会更清楚地回答这个问题:)正在使用的php.ini之间有区别

我正在尝试使用PHP连接到外部SOAP服务,并编写了一个小的PHP测试脚本,它只连接到该服务,并执行一个简单的请求来检查一切是否正常

这一切都正常工作,但当我通过浏览器请求运行时,在40秒左右建立初始连接的速度非常慢。当我在命令行上使用完全相同的脚本执行相同的请求时,它会立即通过

有人知道为什么会这样吗


干杯

可能是
外部SOAP服务
尝试检查您的IP,并且您的服务器允许ICMP,但您的本地网络不允许。

无论如何,
外部SOAP服务的管理员可能会更清楚地回答这个问题:)

正在使用的
php.ini
之间有区别吗

在标准ubuntu服务器安装上:

diff/etc/php5/apache2/php.ini/etc/php5/cli/php.ini

//编辑:


另一个区别可能在于包含路径。我自己在本地测试服务器上遇到了这个问题,它实际上没有使用包含的soap类(它没有包含任何内容,因为搜索路径无效),但它包含内置的
soap\u客户端
类。

PHP将wsdl缓存在/tmp中。如果首先从命令行运行,则缓存文件将由运行脚本的用户所有,apache将无法读取缓存。每次都必须下载和解析wsdl,这会很慢


检查/tmp/wsdl*

的权限是的,他们是我第一个尝试的人,但不幸的是,他们没有太大帮助。当我在命令行上运行脚本时,我通过ssh连接到web服务器,所以任何类似这样的检查都应该工作相同,对吗?也就是说,如果DNS出现了一些不好的情况,它不会对两个上下文产生相同的影响吗?ssh通常在21端口工作,而不是在80端口工作。也许这是一个原因。出于它的价值,我刚刚尝试将测试脚本重新编写为php shell脚本,然后使用另一个脚本使用passthru()执行该脚本。在我看来,这意味着即使从浏览器运行,测试脚本的行为应该仍然像在命令行上执行一样,但是我仍然看到了同样的问题行为。我认为这是压缩,但你能给我们提供更多的细节或url吗?我恐怕不能有效地给出任何url,因为这是付费服务,所有内容都被锁定,所以我不认为URL将在没有向提供商注册ip和没有身份验证详细信息的情况下工作。我很乐意提供任何其他有用的东西-还有什么可以帮助你呢?只要试着自己对这个url做一个谷歌速度测试,看看它说了什么。这是一个非常好的工具。我已经追踪到了用户/权限问题——如果我切换到apache用户,并在命令行上运行脚本,我会得到同样的慢行为。所以我猜现在库正在试图写apache没有权限写的地方,我猜这只是一个四处寻找apache需要写的东西的例子。感谢大家的帮助和建议这听起来很有希望,但不幸的是这是一个Centos服务器,我只能找到一个php.ini。在查看的过程中,我注意到user-server变量在这两个上下文中是不同的。很明显,正在加载的两种配置之间存在差异,但我似乎无法找到可能的位置。我们会继续打猎。谢谢你的建议Sudo chmod 777/tmp/wsdl-*帮了我的忙。(不适用于生产服务器)