Heim  >  Artikel  >  Backend-Entwicklung  >  Apache、PHP、SOAP怎样配合工作

Apache、PHP、SOAP怎样配合工作

WBOY
WBOYOriginal
2016-06-23 14:01:22840Durchsuche

本人刚解除PHP,最近本人使用PHP自带的SOAP实现服务端的RPC功能。
看了很多server.php的例子,这些例子也能工作,但我还是产生了疑问。
一般server.php的代码是这样的:
1. 创建一个类,其中有若干成员函数。
2. 调用函数SoapServer()创建一个服务。
3. 将类中的函数进行注册。
4. 调用handle()函数处理客户端的RPC调用请求。
5. handle()函数返回后,本次服务算是结束。

如果只有一台PC发起客户端请求,apache服务器很容易应付。但如果有成千上万个client请求,
按上面的流程处理,岂不是要创建n次服务例程,销毁n次例程,效率低下可想而知。
或许php不是这样工作的,那么当收到n个(数量多)服务请求时,apache、PHP是怎样处理SOAP请求的呢。
只需大概讲一下处理流程。


回复讨论(解决方案)

是要创建n次服务例程,销毁n次例程
但是, 效率低下可想而知 这样的结论就太武断了
web 服务使用的是无状态的 http 协议,既然是无状态的,那么就不需要服务器端的持久对象
况且 SoapServer()创建一个服务 中的服务只是一个名称而已,并非真正意义上的服务

让程序实际跑跑看吧~ 装个xhprof再压测一下,看下性能瓶颈在哪~
当然,小弟弟我没弄过RPC,但是一般情况下,在“对象创建”和“函数调用”成为瓶颈之前,会有更多更麻烦的地方成为瓶颈,比如数据库效率、白白占用资源的业务代码或者没活跃用户导致项目不再开发等等~

是要创建n次服务例程,销毁n次例程
但是, 效率低下可想而知 这样的结论就太武断了
web 服务使用的是无状态的 http 协议,既然是无状态的,那么就不需要服务器端的持久对象
况且 SoapServer()创建一个服务 中的服务只是一个名称而已,并非真正意义上的服务

不太同意部分观点。
是否应该在服务端放一个持续存在的对象跟http协议无状态没啥关系,服务端资源毕竟是有限的,对其反复“连接?断开”、“查询?释放”会白白造成不必要的开销,这时候有个持续存在的对象来保持这些数据,不去反复请求外部资源就太美好了。

顺便求版主帮反馈一下:改善下论坛的文字编辑体验,目前的这个既不是“所见即所得”又不是“主流通用”如markdown,wiki,真的很难上手诶,一不小心改错了提交后又没有纠正的机会。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn