PHP除了做網站服務器還能做其他應用服務器嗎?

起名字都被註冊了


首先需要強調一點,PHP是開發語言,它是不能做網站服務器的,但它可以用來開發服務。

我們說網站服務器是硬件設備,服務是軟件系統。

業界中,PHP的應用場景有以下:

  • 開發各類網站
    但凡你所見的網站,均可以用PHP來構建。
  • 開發API
    可以用PHP來寫API(接口)便於其它系統調用,如:APP開發。
  • Socket服務
    PHP有兩款成熟框架讓PHP開發Socket服務成為可能,兩款框架為:Workerman、Swoole,後續你可以瞭解一下。
現在的軟件架構模式中,基本上都是各端去調用API,所以“微服務”概念火了。桌面應用或者APP要實現某些功能,或多或少都需要調用遠程API,而現在API最常用的協議就是HTTP或者HTTPS,規範為RESTful。

網絡圈


PHP做web服務器端開發是其重要的應用,能不能做其它應用的服務端呢?為了描述這個問題,首先要知道服務端都有哪些任務,需要提供哪些服務,以及現在的服務端概念發生了哪些變化?

服務端簡單的說就是業務邏輯的處理中心,在任務上簡單的說就是處理客戶的請求並生成回應。從客戶的角度上來描述一個客戶端的請求處理過程大概需要以下幾個步驟:

  1. 用戶提交請求,請求中通常攜帶著數據,這些數據有機構化的也有非結構化的(比如多媒體數據)。

  2. 服務端接收用戶請求,提取客戶端提交的數據,接著驗證數據。

  3. 調用業務組件處理用戶的請求並生成回應。

  4. 客戶端接收到回應數據並呈現給客戶。

這裡面的客戶不一定指的就是人,也有可能是其它參與到業務流程中的角色(業務模塊、打印機等等)。

從服務器的角度上來描述一個客戶端的請求處理過程大概需要以下幾個步驟:

1.當客戶到達服務端,服務端要為其分配一個會話對象來表示此請求,會話對象封裝了客戶的所有信息,這個會話就代表了這個客戶請求,每個會話會分配一個唯一的ID。

2.服務端根據客戶的請求任務來觸發對應的業務組件調用,服務端要到業務模塊目錄服務器中查找對應的服務並返回此業務模塊對象,此步驟涉及到分佈式調用過程。

3.如果業務組件服務器本身是分佈式集群方式來部署,則服務端需要進行一個負載判斷,以此來覺得調用哪個服務模塊來為本次請求進行服務。

4.返回業務模塊對象後,調用其業務方法。此時業務模塊可能需要訪問分佈式數據庫系統,步驟與訪問業務模塊組件類似,通常採用映射層來通明化處理。

5.返回處理數據,服務端把數據封裝到比客戶對應的會話中。此步驟還會涉及到多服務器之間的會話管理。

服務端的處理過程是比較複雜的處理過程,其中涉及到分佈式處理,集群處理,池化容器管理,分佈式數據庫、事務管理、組件同步等等。不同服務對應的協議也不盡相同,比如RMI使用IIOP,還有SOAP等對應協議的使用。

根據以上服務內容的分析我們可以看出,無論是PHP還是Python和Java,這些服務都可以完成,所以不管是web服務還是其它服務,PHP都可以作為服務端編寫語言。至於選擇什麼語言,需要考慮語言本身的性能、團隊實際掌握情況以及開發週期要求等等。

目前在java作為服務端速度上有較大的優勢,目前我的團隊在開發週期允許的情況下(java開發週期較長)會盡量使用java做業務處理後臺的開發語言,如果開發週期端,且任務量小的情況下會使用PHP或者Python,Python比PHP還有慢一點,但是Python開發速度最快。當然還有其它語言也可以作為服務端開發語言,這裡就不一一列舉了,當然如果部署服務器有多平臺要求的情況下,就不要使用C#開發了。

目前服務器端的任務越來越重,分佈式服務越發普遍,採用雲計算服務來部署服務端已經是大勢所趨,雲計算也能為服務端提供可擴展的性能要求,所以服務器的雲端進程會在大部分領域逐步實現。

我在後續的文章中會陸續分析服務端的雲端框架結構,以及如何進行服務端編程,請大家持續關注,謝謝!

時間倉促,難免有所遺漏,IT人劉俊明懇請大家多多指正!


IT人劉俊明


當然可以!

你所說的app後臺服務器,其實也是網站的一種形式,只不過只返回數據,不用管頁面佈局罷了。它還是走http協議的,所以,這個沒難度。

對於第二點,做桌面應用,就比較困難,但不是做不了。方法有兩種:第一種就是做一個本地網站,前面做一個exe,但其實是個瀏覽器,看起來是普通桌面應用,微信qq就是這種方法,只不過沒用php罷了。第二種方式是直接使用gui庫,就像寫普通的程序一樣,這種方式使用的少,而且要使用第三方庫,難度比較大。

對於編程語言來說,沒有什麼做不成的,只是用這個語言可能會很麻煩而已。


汪汪O喵喵


php當然可以做服務端程序了,很多網站都是前端用HTML5和js,後端用php,php只向前端返回數據。這樣做得好處是使頁面更加靈活。我們中國人或許難以理解什麼是頁面靈活,因為國內很難看到app化的網站。所謂的頁面靈活就是整個頁面無轉載過程,無跳轉,所有應用都在一個頁面中動態加載完成,整體的體驗類似於一個獨立的程序。


二十二世紀網絡


我不認為可以應該輕率的解釋為可以。

儘管一把菜刀可以切任何東西,但優秀的廚師會有好幾把不同的刀。

理論上php可以做服務器端程序,但不好用。它只擅長前端表現層。


分享到:


相關文章: