2012-05-03 4 views
3

Я занимаюсь поиском веб-сайтов с помощью PHP. (COMET) Я искал очень давно. (около месяца) Я даже проверил некоторые скрипты чата PHP и использовал их на своем веб-сервере, но у меня были некоторые проблемы для большинства из них. (будет объяснено)PHP и COMET. Нужно руководство

До сих пор большинство людей говорили то же самое: PHP не лучший язык, который можно использовать с COMET. Примеры чата/кометы в лучшем случае взломаны.

Я спрашиваю об этом, потому что я хочу иметь некоторые функции на своих веб-сайтах, например, разрешать пользователям общаться в чате друг с другом. Вот где мне нужно живое соединение с PHP-страницами. Я также планирую сделать игру на основе браузера, и живое соединение по-прежнему будет обязательным!

AJAX был редкой вещью 2 года назад, освещенной Facebook. Теперь почти все используют его, и это стало стандартом для веб-разработки. Теперь веб-сайты на базе COMET растут. Youtube, Google+, Facebook, Battle's EA и т. Д. Я считаю, что я должен научиться его использовать.

Хорошо, вот мои вопросы. (Часть информации на уровне ниже, являются те, которые я собрал во время поиска на Google. Не уверен, что, если они правы или нет.)

  1. Некоторых языков, таких как Python имеет специальный веб-сервера, предназначенные для этой работы. Я считаю, что один из них называется Tornado Web Server. Разработано и настроено для имитации тысяч живых подключений. Я считаю, что в Appserv нет такого варианта, но некоторые люди сказали, что NGINX может справиться с ним с достойной конфигурацией. Это правда? Какие конфигурации должны быть сделаны? Есть ли веб-серверы PHP для этой работы?

  2. Некоторые из наиболее предложенных вещей:

    а. Использование APE.

    b. Использование Socket.IO

    c. Node.js

    Есть ли способ использовать их с PHP? Какой из них наиболее перспективен? Не могли бы вы дать им некоторое руководство? Есть ли что-то еще?

  3. Я использовал сценарий кометного чата. В основном, вы продолжали запрашивать базу данных и выводили результат с помощью flush() в браузер, спя себя с помощью usleep() в цикле. (Это один стало трудно понять, так что обеспечит быстрый код)

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

usleep() функция в основном уничтожила мой веб-сервер на базе операционных систем Windows. Нормально ли полагаться на usleep() на приложения комет, которые работают на ОС на базе Windows? Я имею в виду, есть ли даже способ «спящего» PHP-скриптов? Независимо от того, что я делаю, загрузка процессора идет на% 100 как на WIN, так и на UNIX-серверах.

  1. Является ли PHP «действительно» слабым в этой области? Должен ли я отказаться от PHP и сосредоточиться на других языках? Если да, то какой язык вы бы предложили? (Этот язык должен быть многообещающим. Например, при добавлении HTML5 мало пользы AS3, а AS3 скорее скоро умрет, а JS светит.)

  2. Что такое WebSync? Может ли он использоваться с PHP?

Пожалуйста, имейте в виду, что мне нужно использовать COMET, чтобы сделать следующие приложения:

  • чат скрипт, где вошли в систему игроки смогут общаться друг друга.
  • Браузерная игра. Я уже использую JSON/AJAX и тому подобное при кодировании, но для получения шагов противников мне нужно вытащить данные, чтобы было необходимо живое соединение. (Не представляйте передовые игры, я говорю о таких играх, как шахматы в лучшем случае.)

Я был бы признателен, если вы можете дать мне краткое руководство. В конце концов, я сбиваюсь с толку с каждым днем, так как в Интернете есть МНОГО случайных статей. Люди даже звонят setInterval() как COMET, так что это полный беспорядок.

+0

Если Вы желаете сделать приложение в режиме реального времени, я хотел бы предложить node.js :) – Menztrual

+1

http://me.veekun.com/ blog/2012/04/09/php-a-fractal-of-bad-design/дает хорошее резюме по php; P – Menztrual

+0

_ Должен ли я отказаться от PHP_? Вы имеете в виду вообще? Точно нет. Это вполне приемлемо для использования в качестве основного языка, в то время как использование чего-то еще более подходит для задачи. Для кометы используйте что-то простое и легкое, которое реализует потоки и может разговаривать с базой данных вашего сайта. – halfer

ответ

1

Здесь должно быть какое-то разъяснение. То, что вы ищете, само по себе не является языковым. Если вы хотите достичь функциональности кометы с помощью PHP, вы будете полагаться на веб-сервер (например, Apache) для потоковой передачи HTTP. Также вам нужно понять, что это не поддерживается в версиях HTTP до HTTP/1.1. С учетом сказанного, если вы хотите иметь неблокирующий веб-сервер, основанный на событиях, вам лучше смотреть на Tornado и Node, как было предложено.

0

Comet - это технология программирования, которая позволяет веб-серверам отправлять данные клиенту, не требуя от клиента запроса. Этот метод будет создавать более гибкие приложения, чем классический AJAX. Пользователь должен создать запрос (например, щелкнув по ссылке) или периодический запрос AJAX должен произойти, чтобы получить новые данные для сервера.

но он создает много трафика на вашем веб-сервере. Если вы хотите создать чат-приложение в PHP, используйте pusher, который является сторонним сервисом и прост в использовании. вот ссылка для толкателя https://pusher.com/tutorials/realtime_chat_widget

второе предложение - храповик для создания чат-приложения. здесь ссылка для трещотки http://socketo.me/docs/hello-world

я надеюсь, что это поможет вам

Смежные вопросы