2013-06-15 16 views
6

Ora sto entrando in Web Sockets e sto usando con successo il websocket online Pusher (non mi è piaciuto) e Scribble (incredibile, ma i tempi di inattività sono troppo frequenti dato che è solo una persona che lo esegue).Cosa comporta esattamente la configurazione di un server Websocket PHP?

Ho seguito questo tutorial http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ sul mio localhost e funziona benissimo!

Quello che volevo chiedere è, come posso impostare il server.php dal file sopra per l'esecuzione come server websocket su un server web/server online?

o devo per ottenere un VPS (e in caso affermativo, quale mi consiglia E come posso configurare il server websocket lì come non ho mai usato davvero un VPS prima!)

Grazie molto molto per leggere la mia domanda e rispondere. Ho letto tutte le altre domande/risposte qui riguardo alle prese ma non ho ancora trovato la risposta alle mie domande precedenti. Spero di averlo trovato qui!

risposta

4

Questo è difficile.

È necessario eseguire lo script server.php e non deve mai uscire. Se si dispone di un accesso SSH al server condiviso, è possibile eseguirlo proprio come fanno sulla schermata e farlo funzionare come attività in background usando qualcosa come nohup:

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

Dopo aver invocato questo (utilizzando la connessione SSH), è possibile uscire e il processo continuerà a funzionare. Tutto ciò che lo script stampa verrà archiviato in nohup.out, che puoi leggere in qualsiasi momento.

Se non si dispone di un accesso SSH e l'unico modo per eseguire effettivamente uno script PHP è tramite Apache come risultato di una richiesta di pagina, è possibile semplicemente accedere a tale pagina utilizzando un browser e non chiudere mai il browser. Ma ci sarà un time out un giorno o l'altro e la connessione tra te e Apache si chiuderà, fermando in modo efficace l'esecuzione dello script server.php.

E in questi casi precedenti, molti host condivisi non permetteranno che uno script venga eseguito indefinitamente. Si noterà che c'è questa linea nel server.php:

set_time_limit(0); 

Questo dice PHP che non c'è alcun limite di tempo. Se l'host ha eseguito PHP in safe mode (cosa che molti di loro fanno), non è possibile utilizzare set_time_limit e il limite di tempo è probabilmente 30 secondi o anche meno.

Quindi sì, un VPS è probabilmente la soluzione migliore. Ora, non ne possiedo uno da solo, e non so quale sia il prezzo buono/cattivo, ma direi che lo HostGator sembra a posto.

+0

Risposta perfetta, esattamente ciò di cui avevo bisogno! Grazie mille :) –

+0

Si prega di notare, tuttavia, che la comunità non è tanto in PHP quando si tratta di un'applicazione server. Se hai intenzione di acquistare un VPS in ogni caso, dovresti dare un'occhiata a [socket.io] (http://socket.io/) (Node.js) o [Autobahn] (http://autobahn.ws/) (Python). Quelle sono soluzioni integrate (librerie corrispondenti per lato server e client) che hanno dimostrato di funzionare bene. Naturalmente puoi iniziare con il tuo server PHP minimalista per capire il protocollo e gli aspetti "di basso livello". – eepp

+0

La migliore soluzione PHP di cui sono a conoscenza è [Ratchet] (http://socketo.me). Esistono numerose soluzioni self-contained per altri linguaggi (consultare [guida in tempo reale sul web tech] (http://www.leggetter.co.uk/real-time-web-technologies-guide)). Generalmente per PHP, consiglierei di usare una soluzione ospitata. – leggetter