2011-05-09 80 views
6

我想在php中爲多個客戶端創建服務器的http套接字連接。我怎樣才能做到這一點 ?我需要一些資源。http服務器在php

首先我試圖在java中創建服務器。我在java中創建一個服務器。並試圖從android應用程序到達。但服務器找不到任何客戶端。但是當我在java中創建客戶端時,它正在工作。我該如何解決這個問題?

+0

你可以看看Nanoserv http://nanoserv.si.kz/或PEARs Net_Server http://pear.php.net/package/Net_Server/ – mario 2011-05-09 13:28:27

+1

一定要注意執行超時。另外,就我所知,它缺少在大多數Web服務器中看到的線程。如果可能的話,另一種語言可能會是更好的選擇。 – jocull 2011-05-09 13:23:25

+0

你正在使用什麼webserver?或者你想創建自己的Web服務器?它不會重新發明輪子嗎? – 2011-05-18 09:07:04

回答

2

個人而言,我認爲這將是一個非常糟糕的主意,因爲已經提到它缺少線程,它的套接字支持(imo)並不是真的適應性強。

唯一的好處是你可以使用fork來分離另一個PHP進程來處理客戶端,但是你變得非常複雜。

另一種語言會更適合這種類型的開發。

請注意,即使您在PHP中這樣做了,您也可能不得不依賴外部服務,甚至可能最終還是會用另一種語言編寫至少一些代碼。

0

從問題標題判斷(其他問題只會讓問題變得更加混亂),您可以使用現有的軟件包(如http://pear.php.net/package/HTTP_Server)來實現PHP中的網絡服務器。它已經包含所有socket代碼來接受客戶端連接和東西。

所以我必須做的,從不同的客戶

「查找」找到服務器過於寬泛的話題。取決於您的實際設置。在局域網上有一些發現協議。否則,您應該只依靠固定的計算機名稱和端口號來實例化服務器。您可以連接到它,例如http://localhost:8007/或任何你預先定義的。

1

您正在嘗試使用PHP來做什麼?請注意,我喜歡PHP並且幾乎每天都使用PHP,但請記住PHP本身基於請求和響應,並且不適合長時間運行的進程。以練習的方式,這可能會很有趣,但如果您嘗試使用PHP從頭開始編寫Web服務器,則可能需要重新考慮您選擇的語言。

也就是說,您可以create a socket充當服務器,並偵聽傳入的數據包。我仍然認爲你正在重新發明輪子。

+0

有http://nanoweb.si.kz/它在PHP4上的表現超過Apache 2.0。雖然它不是生產設置的完全替代品,但可以適用於某些應用程序設置。 – mario 2011-05-18 10:09:26

+0

我可以在至少*五個不同的Web服務器上命名,這將超越Apache 2.0。這並不意味着重新構建它是一個好主意。 – 2011-05-19 08:40:56

+0

@BerryLangerak你完全正確:PHP不是爲此 - 即使你可以得到PHP代碼來打開一個套接字4你聆聽它一段時間 – 2013-02-06 15:23:01

1

雖然我喜歡php和java,但是我在C++中編寫了socket服務器,並在亞馬遜ec2雲服務器中運行。編碼,調試和安全性非常非常簡單,您幾乎可以複製/粘貼示例。從長遠來看,由於可移植性和可伸縮性,我可能會開發一個java解決方案,但獲得C++解決方案的初始努力遠遠少於實施java解決方案。

您必須確定(找出)的第一件事是您的服務器是否允許您打開自定義端口。亞馬遜ec2在這個時間點(feb13)可以免費使用12個月。

所以,這是給你,如果你是在趕時間:

this here set of examples擁有所有你需要啓動和運行中沒有時間。