2009-12-25 16 views
5

Esiste una soluzione reale per COMET e PHP? Fondamentalmente, sono giunto al punto che ho bisogno di aggiornare periodicamente una home page dell'utente ogni volta che ci sono nuovi dati nel database. Per quanto ho capito, ho bisogno di aprire una connessione persistente tra il mio server e i browser dei miei clienti per aggiornare i contenuti della loro home page non appena nuove informazioni. disponibile senza dedicare molte risorse ma non ho avuto fortuna a trovare qualcosa di chiaro su questo problema. Ho letto molti articoli che suggeriscono che PHP non è un buon linguaggio per implementare COMET. La mia applicazione web è completamente programmata in PHP e non voglio imparare un'altra lingua, ma se sono obbligato a farlo, suggeriresti un buon linguaggio per cominciare? Pensi di poter programmare un'interfaccia solo per gestire questo problema?soluzione per COMET e PHP

Grazie in anticipo.

+0

Duplicato: http://stackoverflow.com/questions/603201/using-comet-with-php – jvenema

risposta

0

Non è necessario imparare una nuova lingua per implementare tale funzione.

Ad esempio, è possibile utilizzare Quercus (implementazione Java di PHP) e implementare un'applicazione Comet server utilizzando il modello di gestione della memoria JVM.

+0

Molto interessante sentire che c'è un PHP in implementazione JAVA . Come quello che ho letto nei documenti, è molto più veloce del modulo PHP-APACHE tradizionale, ma sono davvero confuso. Per quanto ho capito, Resin servirà pagine PHP non apache, ma come posso implementare un'applicazione server Comet usando JVM come hai detto? Dovrei utilizzare alcune funzioni di JAVA. Perdonami, sono un principiante in questa tecnologia e non ho alcuna esperienza in JAVA. Grazie – codemaker

0

Non ci sono soluzioni necessarie:

soluzione
  1. quasi COMET (usa php e un file scritto con perl): http://translate.google.com/translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http://dklab.ru/lib/dklab_multiplexor/&sl=ru&tl=en

  2. esatta soluzione COMET in php (questo è ciò che si vuole, credo): http://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=http://dklab.ru/lib/dklab_realplexor/

+0

Grazie mille per le informazioni. Ho intenzione di provarlo. – codemaker

0

Si dovrebbe cercare Dmitry Koterov di Realplexor, che è un server comet, che fornisce API Javascript e PHP.

Readme.txt in inglese è fornito nello package.

+0

Siamo spiacenti, il collegamento è morto. – codemaker

+0

funziona per me. prova a scaricare da questa pagina: http://github.com/DmitryKoterov/dklab_realplexor/ –

2

le volte che ho sentito dire che PHP non era adatto per COMET (come hai detto tu) era a causa del modo in cui server web e il lavoro PHP - per lo più, perché non v'è un processo per ogni pagina, che significa che se vuoi 200 utenti connessi al tuo server, avrai bisogno di 200 processi (che può rapidamente diventare un problema per un paio di centinaia di utenti).

Forse una soluzione a questo problema sarebbe utilizzare nginx_http_push_module?

non ho (ancora?) provato, ma potrebbe essere proprio quello che ci serve ...

+0

Interessante. C'è qualche esempio su come utilizzarlo. per esempio, come spingere i dati dallo script PHP a un broswer? – codemaker

+0

Non ho ancora visto alcun esempio di PHP, sfortunatamente ;-(; potrei provare un giorno o l'altro, ma non nell'immediato futuro ... Comunque, se provi te stesso e/o trovi qualcosa di interessante, io m interessato da ciò che potresti trovare ;-) –

0

Lei avrebbe prima bisogno di capire che cosa è un'applicazione di una cometa come. Il concetto coinvolti nella costruzione di un'applicazione cometa sono spiegati al wiki a Comet (programming)

Quello che dovete capire è che è possibile utilizzare qualsiasi linguaggio di programmazione per creare un'applicazione cometa fintanto che segue i concetti spiegati al wiki

1.Ajax con polling lungo

2.Streaming

È possibile controllare alcuni esempi di codice a Simple “Long Polling” example code

Ora venendo ai problemi -

1.You uso ajax polling lungo allora il browser (richiesta AJAX) avrebbe mantenuto il polling del server per i dati. Questo potrebbe consumare memoria sul server o rallentare il browser dopo un po 'di tempo.

Alcuni suggerimenti

JQuery PeriodicalUpdater (AJAX long polling/server polling)

Handling Long Polling

RobertFischer/JQuery-PeriodicalUpdater

Quello che dovete controllare per implementare questo -

a) Quanto spesso vi aspettate i dati da aggiornare su il server.

b) Per quanto tempo lo script sul lato server sarebbe stato eseguito per controllare, recuperare ed elaborare i dati prima di inviarli al lato client.

2.You può implementare in streaming utilizzando il seguente -

How to implement COMET with PHP

Lightstreamer Dojo

Dojo Charting + Lightstreamer Comet Demo

Demo

Ajax Push Engine or The APE Project

Quello che vi serve per verificare la presenza di questo -

a) sarà il vostro fornitore di hosting consentono di installare questi su server che ospitano

b) La vostra RAM e l'utilizzo della larghezza di banda (Avrete bisogno di un server dedicato con il pacchetto che ti dà un sacco di RAM e larghezza di banda)

Dipende da cosa e come sono le tue esigenze. Dovrai analizzare e avvicinarti.

Se ciò che si sta implementando è una piccola applicazione, è possibile effettuare il polling Ajax Long dato che si sono analizzati e gestiti i negativi di questo approccio.

Se si dispone di una grande applicazione è possibile andare per la cottura a vapore.

1

Stavo lavorando a un progetto scolastico e ho avuto lo stesso identico problema. Poiché ogni processo PHP ha così tanta memoria, è impossibile supportare molte connessioni per scatola. È stato a questo punto che ho deciso di passare all'utilizzo di BOSH e XMPP. Questa è una "ondata" di tecnologia piuttosto nuova, ma ci sono già un bel po 'di librerie che ti aiuteranno nel tuo cammino. Vorrei suggerire l'utilizzo di Strophe e XMPPHP. Quindi i tuoi clienti possono connettersi a un server BOSH (sto usando Openfire) e questo può scalare a migliaia di connessioni attive per server.

0

Ajax con il polling lungo è una soluzione semplice, ci sono plugin in jquery e qualsiasi altro framework js principale per aiutarti a farlo.

+0

Comet è un lungo polling Ajax, PHP non ti lascia armeggiare con il tipico modello di pagina/richiesta, quindi è difficile ottenere buoni risultati con Comet e PHP – Michael

0

Node.js sembra una soluzione piuttosto dolce per cose come questa. (Ancora un po 'giocoso per la produzione, ma comunque cool). PHP è un ambiente orribile per cose come questa, devi cambiare il modo in cui il server interagisce con le richieste perché non stai più rispondendo immediatamente. Python ha una manciata di server come Twisted che sono grandiosi per questo perché ti permettono di fare il server. Indipendentemente dalla lingua in cui lo scrivi, devi modificare il tipico modello di richiesta/risposta. (Il server di Grizzly Comet di Glassfish fa questo per Java come esempio)