PHP y cometa. Necesito un poco de orientación

He estado buscando hacer sitios web en vivo usando PHP. (COMETA) He estado buscando durante mucho tiempo ya. (alrededor de un mes) Incluso revisé algunos scripts de chat PHP y los usé en mi servidor web, pero tuve algunos problemas con la mayoría de ellos. (será explicado)

Hasta ahora, la mayoría de la gente dice lo mismo: PHP no es el mejor lenguaje que podría usarse con COMET. Los ejemplos de chat/cometa son, en el mejor de los casos, hacky.

Estoy preguntando esto porque quiero tener algunas funciones en mis sitios web, como permitir que las personas registradas chateen entre sí. Ahí es donde necesito una conexión viva con las páginas PHP. También estoy planeando hacer un juego basado en navegador, ¡y una conexión viva seguirá siendo imprescindible!

AJAX era algo raro hace 2 años, brilló con Facebook. Ahora casi todo el mundo lo usa y se convirtió en un estándar en el desarrollo web. Ahora, los sitios web basados ​​en COMET están creciendo. Youtube, Google+, Facebook, Battlelog de EA y demás. Creo que debería aprender a usarlo.

Bien, aquí están mis preguntas. (Parte de la información a continuación es la que recopilé mientras buscaba en Google. No estoy seguro de si es correcta o no).

  1. Algunos lenguajes como Python tienen servidores web especiales diseñados para este trabajo. Creo que uno de ellos se llama Tornado Web Server. Desarrollado y configurado para simular miles de conexiones vivas. Creo que no existe tal opción en Appserv, pero algunas personas dijeron que NGINX puede manejarlo con una configuración decente. ¿Es verdad? ¿Qué configuraciones se deben hacer? ¿Hay algún servidor web PHP para este trabajo?

  2. Algunas de las cosas más sugeridas son:

    una. Usando APE.

    B. Usando Socket.IO

    C. Nodo.js

    ¿Hay alguna manera de que podamos usarlos con PHP? ¿Cuál es el más prometedor? ¿Podría dar alguna orientación sobre ellos? ¿Hay algo más que estos?

  3. He usado un script de chat de Comet. Básicamente, siguió consultando la base de datos y envió el resultado con flush() al navegador durmiéndolo con usleep() en un bucle. (Este se volvió difícil de entender, así que proporcionaré un código rápido)

    while(true)
    {
        // query database
       // output the result
       // flush the browser
       // sleep for few seconds to lower cpu load 
    }
    

usleep() básicamente destruyó mi servidor web en sistemas operativos basados ​​en Windows. ¿Es normal confiar en usleep() en las aplicaciones Comet que se ejecutan en un sistema operativo basado en Windows? Quiero decir, ¿hay alguna forma de "dormir" los scripts PHP? No importa lo que haga, la carga de la CPU llega al 100% en los servidores WIN y UNIX.

  1. ¿Es PHP "realmente" tan débil en esta área? ¿Debería renunciar a PHP y centrarme en otros idiomas? Si es así, ¿qué idioma sugeriría? (Ese lenguaje debería ser prometedor. Por ejemplo, no hay mucho uso de AS3 después de la adición de HTML5, y es más probable que AS3 muera pronto mientras JS brilla).

  2. ¿Qué es WebSync? ¿Se puede usar con PHP?

Tenga en cuenta que necesito usar COMET para hacer las siguientes aplicaciones:

  • Un script de chat, donde los jugadores registrados podrán chatear entre ellos.
  • Un juego basado en navegador. Ya uso JSON/AJAX y cosas así al codificar, pero para recibir los pasos de los oponentes, debo extraer los datos, por lo que se necesita una conexión activa. (No imagines juegos avanzados, estoy hablando de juegos como el ajedrez en el mejor de los casos).

Agradecería si me puede dar una breve orientación. Después de todo, me he estado confundiendo día a día ya que hay MUCHOS artículos aleatorios en Internet. La gente incluso llama setInterval() como COMET, por lo que es un completo desastre.

preguntado el 03 de mayo de 12 a las 22:05

Si desea hacer aplicaciones en tiempo real, sugeriría node.js :) -

¿Debería rendirme con PHP?? ¿Quieres decir en general? Definitivamente no. Es perfectamente aceptable usar esto como su idioma principal, mientras usa otro más adecuado para la tarea en cuestión. Para Comet, use algo simple y liviano que implemente subprocesos y pueda comunicarse con la base de datos de su sitio. -

Hay algunas preguntas interesantes en su publicación, pero "¿Qué es WebSync?" es algo que podría investigarse antes de preguntar aquí. Busque "WebSync con PHP" en la web si desea saber si se puede usar con PHP :). -

@tehlulz: ese artículo es interesante y tiene algunos puntos justos. Pero no estoy seguro de que me guste el tono sarcástico, ni la predecible pelea de bollos en los comentarios. ¿No podemos simplemente aprender a respetar las herramientas de los demás? -

2 Respuestas

Es necesario que haya alguna aclaración aquí. Lo que está buscando no es un idioma específico per se. Si quisiera lograr la funcionalidad de Comet con PHP, confiaría en el servidor web (por ejemplo, Apache) para realizar la transmisión HTTP. También debe comprender que esto no es compatible con las versiones de HTTP anteriores a HTTP/1.1. Dicho esto, si desea tener un servidor web basado en eventos sin bloqueo, es mejor que busque Tornado y Node como se sugiere.

contestado el 03 de mayo de 12 a las 23:05

Comet es una técnica de programación que permite a los servidores web enviar datos al cliente sin necesidad de que el cliente los solicite. Esta técnica producirá aplicaciones con mayor capacidad de respuesta que el AJAX clásico. El usuario debe crear una solicitud (por ejemplo, haciendo clic en un enlace). o debe ocurrir una solicitud AJAX periódica para obtener nuevos datos del servidor.

pero crea mucho tráfico en su servidor web. Si desea crear una aplicación de chat en PHP, use pusher, que es un servicio de terceros y fácil de usar. aquí hay un enlace para empujar https://pusher.com/tutorials/realtime_chat_widget

la segunda sugerencia es usar trinquete para crear una aplicación de chat. aquí hay un enlace para el trinquete http://socketo.me/docs/hello-world

Espero que te ayude

Respondido el 03 de Septiembre de 17 a las 13:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.