作者:淡若清芬_920 | 来源:互联网 | 2023-05-18 20:19
YesterdayIvepostedquestionaboutSQLiteperformanceissues(TerribleperformanceinZendDbPDO
Yesterday I've posted question about SQLite performance issues ( Terrible performance in Zend Db PDO_sqlite insert and update queries ). After several tests It seems like the problem occurs only when methods are called through SoapServer (tried both native PHP SoapServer and Zend_Soap_Server classes).
昨天我发布了关于SQLite性能问题的问题(Zend Db PDO_sqlite插入和更新查询中的可怕性能)。经过多次测试似乎只有在通过SoapServer调用方法时才会出现问题(尝试了本机PHP SoapServer和Zend_Soap_Server类)。
Test case - calling 10 methods which use SQLite DB INSERT and UPDATE DB operations.
测试用例 - 调用10个使用SQLite DB INSERT和UPDATE DB操作的方法。
Here are several cases of how it works:
以下是几种工作原理:
1.Through the controller - without using Soap server. localhost:~0.3s, remote server:~0.3s
1.通过控制器 - 不使用Soap服务器。 localhost:~0.3s,远程服务器:~0.3s
2.Through the Soap server. 1st call. localhost:~1-2s, remote server:~7s!
2.通过Soap服务器。第一个电话。 localhost:~1-2s,远程服务器:~7s!
3.Through the Soap server. Several calls. localhost:~1-10s, remote server:~7s
3.通过Soap服务器。几个电话。 localhost:~1-10s,远程服务器:~7s
3rd case doesn't concern me that much, probably might be the local server performance issue. Important thing is that it works stable on remote server.
第三种情况并不关心我,可能是本地服务器性能问题。重要的是它在远程服务器上运行稳定。
On the other hand, 7 seconds for simple 10 method calls is increadibly long. Obviously - part of this 7 seconds is client-server communication, as case 1 omits that, but i don't think It should be that slow!
另一方面,简单的10个方法调用的7秒是可增长的。显然 - 这7秒的一部分是客户端 - 服务器通信,如案例1省略的那样,但我不认为它应该那么慢!
For debugging I'm logging everything, and what seems to happen is that the same SQLite methods called in case 1, take 0.00x-0.02s, here last for ~0.15-0.45s.
对于调试我正在记录所有内容,似乎发生的情况是在案例1中调用的相同SQLite方法,取0.00x-0.02s,此处最后为~0.15-0.45s。
What might be the issue? Is it normal thing that it slows down so drasticly when using SOAP? (It's my first soap server project).
可能是什么问题?使用SOAP时它是如此急剧减速是否正常? (这是我的第一个肥皂服务器项目)。
EDIT: another important log fact I've found:
编辑:我发现的另一个重要的日志事实:
Information -2012-04-26 13:08:07.782679 Class: SoapController. Method: SoapController::hadleWSDL. Line: 18.
信息-2012-04-26 13:08:07.782679类:SoapController。方法:SoapController :: hadleWSDL。行:18。
Information-2012-04-26 13:08:08.318641 * SYSTEM START UP *
信息-2012-04-26 13:08:08.318641 *系统启动*
So that's basicly time between 2 methods being called. Over 0.5s for client-server communication with a little amount of data seems a lot to me. Here's the code for handleWSDL action:
所以这就是调用两种方法之间的基本时间。使用少量数据进行客户端 - 服务器通信超过0.5秒对我来说似乎很重要。这是handleWSDL操作的代码:
$optiOns= array(
'encoding' => 'UTF-8',
'cache_wsdl' => WSDL_CACHE_BOTH,
'uri' =>$this->_WSDL_URI
);
$soap = new Zend_Soap_Server(null, $options);
$soap->setClass('SoapServerFunction');
$soap->setObject(new SoapServerFunction());
$soap->handle();
The application is really simple - SOAP method takes 1 parameter, and basing on it 1 cached object is created, data is being processed, and part of data is returned in XML format.
应用程序非常简单 - SOAP方法接受1个参数,并在此基础上创建1个缓存对象,正在处理数据,并以XML格式返回部分数据。
Thank you in advance for any suggestions what I can do to either make it faster or how to track what's the real reason of slowing down.
提前感谢您提出的任何建议,我可以做些什么来加快速度,或者如何跟踪减速的真正原因。
Best regards!
最好的祝福!
1 个解决方案