2013-06-15 27 views
6

Dostaję się teraz do gniazd internetowych iz powodzeniem używam internetowych wtyczek internetowych Pusher (nie podobają im się) i Scribble (zdumiewające, ale przestoje są zbyt częste, ponieważ jest to tylko jedna osoba, która je obsługuje).Co dokładnie oznacza utworzenie serwera PHP Websocket?

Śledziłem ten tutorial http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ na moim localhost i działa świetnie!

To, co chciałem zapytać, to jak skonfigurować serwer.php z powyższego pliku, aby działał jako serwer sieci Web na serwerze internetowym/współdzielonym?

Czy muszę uzyskać VPS (i jeśli tak, to który z nich polecacie i jak mogę skonfigurować serwer websocket tam tak naprawdę nigdy nie użył VPS przed!)

Dziękuję bardzo dużo za przeczytanie mojego pytania i udzielenie odpowiedzi. Czytałem wszystkie inne pytania/odpowiedzi dotyczące gniazd, ale nie znalazłem jeszcze odpowiedzi na powyższe pytania. Mam nadzieję, że znajdę to tutaj!

Odpowiedz

4

To jest trudne.

Musisz wykonać skrypt server.php i nigdy nie należy go opuszczać. Jeśli masz dostęp SSH do serwera współdzielonego, można wykonać go tak jak robią na screenie i uczynić ją uruchomić jako zadanie w tle przy użyciu coś podobnego nohup:

$ nohup php server.php 
nohup: ignoring input and appending output to `nohup.out' 

po wywołaniu tego (za pomocą połączenia SSH), możesz wyjść i proces będzie kontynuowany. Wszystko, co wydrukuje skrypt, zostanie zapisane w pliku nohup.out, który można przeczytać w dowolnym momencie.

Jeśli nie masz dostępu do SSH, a jedynym sposobem na wykonanie skryptu PHP jest użycie Apache w wyniku żądania strony, możesz po prostu przejść do tej strony przy użyciu przeglądarki i nigdy nie zamykać przeglądarka. Ale pewnego dnia upłynie pewien czas, a połączenie między tobą a Apache się zamknie, skutecznie zatrzymując wykonywanie skryptu server.php.

W poprzednich przypadkach wiele współdzielonych hostów nie zezwoli na uruchomienie skryptu w nieskończoność. Można zauważyć, że jest to linia w server.php:

set_time_limit(0); 

Mówi PHP, że nie ma limitu czasowego. Jeśli host sprawił, że PHP działało w safe mode (z czego wiele z nich robi), to nie można używać numeru set_time_limit, a limit czasu wynosi prawdopodobnie 30 sekund lub nawet mniej.

Tak, tak, VPS jest prawdopodobnie najlepszym wyborem. Teraz sam nie jestem właścicielem i nie wiem, jaka jest dobra/zła cena, ale wydaje mi się, że HostGator wydaje się być w porządku.

+0

Doskonała odpowiedź, dokładnie to, czego potrzebowałem! Dziękuję bardzo :) –

+0

Należy jednak pamiętać, że społeczność nie jest aż tak bardzo skoncentrowana na PHP, gdy chodzi o aplikację serwera. Jeśli mimo wszystko zamierzasz kupić VPS, powinieneś zajrzeć do [socket.io] (http://socket.io/) (Node.js) lub [Autobahn] (http://autobahn.ws/) (Python). Są to zintegrowane rozwiązania (pasujące do bibliotek po stronie serwera i klienta), które okazały się dobrze działać. Oczywiście możesz zacząć od minimalistycznego serwera PHP, aby zrozumieć protokół i aspekty "niskiego poziomu". – eepp

+0

Najlepsze rozwiązanie PHP, o którym wiem, to [Ratchet] (http://socketo.me). Istnieje wiele samodzielnie hostowanych rozwiązań dla innych języków (patrz [internetowy przewodnik techniczny w czasie rzeczywistym] (http://www.leggetter.co.uk/real-time-web-technologies-guide)). Ogólnie dla PHP zalecam używanie hostowanego rozwiązania. – leggetter