2012-04-17 22 views
1

使用PHP CLI SAPI開發(簡單)服務器軟件是否可行(並且可行)?在PHP中是否有一些可用的(真正的)多線程方法,以便服務器能夠同時處理多個請求?或者你會推薦一個像這樣的項目的另一種腳本語言(Python或類似的東西)?使用PHP CLI的基於PHP的服務器SAPI

+0

你似乎在尋找一個解決方案尋找一個問題... – 2012-04-17 18:29:45

+0

nope,我只是問沒有很大的努力是否可能在PHP中。如果沒有,我會切換到phyton或者什麼 – Stefan 2012-04-17 18:30:59

+0

通過CLI從Web服務器運行PHP不會讓CGI或mod_php獲益。 – 2012-04-17 18:32:01

回答

1

是的,可以在PHP中開發TCP或UDP服務器。看一看在PHP中集的socket函數:PHP:Sockets - Manual

雖然PHP有沒有多線程功能,你可以隨着socket_select()

要回答這個問題,使用非阻塞IO(seesocket_set_nonblock())創建簡單的並行性「是它可行的「,它需要更多關於項目需求的信息。爲「是」的原因可能是:

  • 您需要將服務器整合到現有的PHP類,模型框架
  • 您計劃局間使用服務器PHP數據結構。 (也許使用serialize()產生,unserialize()

你可能會發現你的其他原因,當然。

您應該注意的另一件事是,當在Web服務器環境(例如apache SAPI)中,您已經有一個並行的TCP服務器 - Web服務器。你只需要實現幾個請求之間的通信。您可以使用PHP的IPC功能,數據庫或至少一個用於該通信的文件。

0

使用PHP CLI SAPI開發(簡單)服務器軟件是否可行(並且可行)?

有一個已經內置了:http://php.net/manual/en/features.commandline.webserver.php

是否有PHP(實時)多線程的一些可用的方式,使服務器能夠同時處理多個請求嗎?

你通常不會做,在PHP,而是將它交給一個sepparated服務(你也可以用PHP編寫),像http://php.net/manual/en/book.gearman.php

或者你會建議其他腳本語言對於像這樣的項目(Phyton或類似的東西)?

這一個取決於您的需求,不能沒有更多的信息回答。 Python的,Java或Golang可能是更好的選擇

注意:PHP是一個多線程的語言,但它不公開多線程功能的腳本的運行時間。