php - SOAP 方法调用极慢

标签 php performance soap

我正在从事一个严重依赖 SOAP 调用的项目。问题是加载时间非常长。

$client = new SoapClient("https://link.to.wsdl");
$client = $client->GetDestination(array(
"parameter1" => $param1,
"parameter2" => $param2
));

现在我做了一些计时,代码的第一部分(启动一个对象 $client)大约需要 2 秒,非常可以接受。但是在调用 getDestination 时它会增加大约 10 秒的加载时间。这是我调用的每个 get 或 set 方法。

此代码在 php 5 上运行。方法是用 .net 4.x 编写的

有谁知道这是为什么以及如何解决?

编辑:ping 统计 发送 10 个数据包,接收 10 个数据包,0.0% 数据包丢失 往返 min/avg/max/stddev = 1.086/2.320/3.624/1.157 ms

最佳答案

首先,您应该使用 soap.wsdl_cache_enabled 启用 WSDL 缓存ini 值或使用 SoapClient$options 参数构造函数。这将阻止 PHP 一次又一次地下载 wsdl 并会加速构造函数(2 秒也很长)

为了加速方法调用本身,我需要更多信息。你能用wireshark吗反射(reflection)您的应用和 soap 服务器之间的网络通信?

关于php - SOAP 方法调用极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032025/

相关文章:

linux - 如何统计ARM程序执行的指令数?

c++ - 无法使用 loadxml 加载 '@' 符号

php - 如何对服务器内存和处理器进行压力测试?

php文档 : PHP Warning: count(): Parameter must be an array or an object that implements Countable

php - setAttribute/addAttribute 中的 XML 实体

Python MySQL 脚本速度慢,需要一些建议

javascript - 由选择框更新的 php session 变量显示/隐藏不同语言的 div

mysql - 在 Rails 中监控站点性能的最佳方法是什么

ajax - 为什么使用 wsHttpBinding 时 InstanceContextMode.PerSession 的行为类似于 PerCall?

.net - 客户端证书 : Could not establish secure channel for SSL/TLS with authority (Again! )