2009-06-26 49 views
2

我試圖實現一個套接字服務器,將運行在大多數共享的PHP託管。PHP套接字或Python,Perl,Bash套接字?

要求是可以自動安裝,啓動和停止Socket服務器,而無需用戶執行任何操作。無論套接字服務器是用什麼語言編寫的,只要它可以在全球大部分共享主機上運行。

目前,我已經寫了用PHP套接字服務器實現的對象緩存: http://code.google.com/p/php-object-cache/

來源:http://code.google.com/p/php-object-cache/source/browse/trunk/socket.class.php

然而,PHP已經被用插座支持編譯,並沒有太多的服務器上運行與PHP套接字支持。

我真正的問題是:我應該使用什麼語言來實現套接字服務器,並且具有最大的平臺支持並且可以在PHP中調用。

換句話說,什麼腳本語言是PHP啓用的服務器上最常見的?

或者我必須以編譯語言編寫套接字服務器才能使其適用於所有服務器?

讓我們暫時把IIS留在圖片中,只是Linux服務器。我不認爲許多PHP網站都運行在IIS上...


編輯:

對不起,我想我的問題是不明確的。

我想知道,什麼語言是最適合用於創建給出以下要求的插座服務器:

語言必須在共享的主機,沿着PHP在Apache中(未CLI)運行存在。 套接字支持必須本地啓用,而不是通過所需的擴展。 PHP必須能夠將deamon寫入文件以及啓動和停止deamon。

我不是要求一個單一服務器的解決方案。它必須在大多數共享託管服務器上本地運行。

+0

爲什麼你想從PHP調用它?一個服務器通常不會被調用,但是一直運行在一個deamon上。 – 2009-06-26 09:21:30

+0

我不知道有多少「許多」,但我從一家主要提供商託管,它是IIS,並有非常好的PHP支持。 – 2009-06-26 11:37:12

回答

2

這實際上取決於安裝要求是什麼。通常編寫套接字服務器的最簡單和最標準的方法是編寫一個inet.d service。這是我的unix機器上的標準守護進程,它將分叉進程並處理套接字級別細節。如果你希望你的服務在Unix上運行在低於​​1024的端口上,這是完成它的更簡單的方法之一。但是,初始安裝需要root來配置inet.d.

如果您共享主機允許PHP執行exec調用,那麼您可以通過這種方式啓動守護進程。請記住,它需要運行在1024以上的端口。接下來需要確定您的程序是多線程還是多進程。通常Java程序是多線程的,而Apache實例通常是多進程的。

最後,主機可能有防火牆。這有助於防止共享主機帳戶成爲bot-net的一部分。如果防火牆規則不允許連接到其他端口,您將無法遠程連接到它。

7

任何服務器都可以在Linux下由PHP停止或啓動。當然,如果您運行的服務器接受來自Internet的套接字,那麼您可以直接連接到服務器並告訴它關機。無需通過PHP!至於「從PHP啓動服務器」,那麼在Linux下,任何東西都可以從任何東西開始。掏腰包開始進程並讓它進入守護進程模式。

我是一個Perl粉絲。毫不奇怪,有一個 Perl Daemon library available

如果您的託管服務提供商提供Perl腳本支持,那麼您可能有權使用「系統」或反引號command。那麼你很可能會啓動一個守護進程。但是,您將需要使用非特權端口(超過1024)。另外,你應該問他們第一!他們可能不會感激你在服務器上捆綁端口。這絕對是您應該與您的託管服務提供商討論的問題。