gpt4 book ai didi

php - 加速 SOAP 驱动的网站

转载 作者:可可西里 更新时间:2023-11-01 13:40:50 26 4
gpt4 key购买 nike

我们目前正在考虑对严重依赖 Soap 网络服务的网站进行一些性能调整。但是……我们的服务器位于比利时,我们连接的网络服务位于旧金山,因此至少可以说是长距离连接。

我们的网站由 PHP 驱动,使用 PHP 内置的 SoapClient 类。平均调用 Web 服务需要 0.7 秒,我们每页执行大约 3-5 个请求。所有可能的请求/响应缓存都已实现,因此我们现在正在寻找其他方法来提高连接速度。

这是实例化 SoapClient 的代码,我现在正在寻找的是其他方式/方法来提高单个请求的速度。有人有想法或建议吗?

private function _createClient()
{
try {

$wsdl = sprintf($this->config->wsUrl.'?wsdl', $this->wsdl);
$client = new SoapClient($wsdl, array(
'soap_version' => SOAP_1_1,
'encoding' => 'utf-8',
'connection_timeout' => 5,
'cache_wsdl' => 1,
'trace' => 1,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS
));

$header_tags = array('username' => new SOAPVar($this->config->wsUsername, XSD_STRING, null, null, null, $this->ns),
'password' => new SOAPVar(md5($this->config->wsPassword), XSD_STRING, null, null, null, $this->ns));
$header_body = new SOAPVar($header_tags, SOAP_ENC_OBJECT);
$header = new SOAPHeader($this->ns, 'AuthHeaderElement', $header_body);

$client->__setSoapHeaders($header);

} catch (SoapFault $e){
controller('Error')->error($id.': Webservice connection error '.$e->getCode());
exit;
}

$this->client = $client;
return $this->client;
}

最佳答案

因此,根本问题是您必须执行的请求数量。如何创建分组服务?

  • 如果您负责网络服务,您可以创建专门的网络服务,同时执行多项操作,这样您的主应用程序每个页面只能执行一个请求。
  • 如果没有,您可以将您的应用程序服务器重新定位在 SF 附近。
  • 如果无法重新定位所有服务器并且您无法创建新的专用网络服务,则可以在网络服务服务器附近添加一个桥接器。该桥将提供专门的 web 服务,并负责调用原子 web 服务。例如,您可以使用 0.7s + 5 * 0.1 而不是 0.7s * 5。

关于php - 加速 SOAP 驱动的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com