Apache、PHP、SOAP怎樣配合工作

來源:互聯網
上載者:User
本人剛解除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協議無狀態沒啥關係,服務端資源畢竟是有限的,對其反覆“串連?斷開”、“查詢?釋放”會白白造成不必要的開銷,這時候有個持續存在的對象來保持這些資料,不去反覆請求外部資源就太美好了。

順便求版主幫反饋一下:改善下論壇的文字編輯體驗,目前的這個既不是“所見即所得 (WYSIWYG)”又不是“主流通用”如markdown,wiki,真的很難上手誒,一不小心改錯了提交後又沒有糾正的機會。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.