Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос про LONG POLLING
 
 автор: Nikolayers   (20.08.2013 в 15:23)   письмо автору
 
 

1) Прочитал на форуме фрилансеров, что LONG POLLING жрет много оперативной памяти. Правда ли это? Проверить нет возможности, интересует опыт форумчан)) Фрилансеры посоветовали использовать обычный опрос сервера через аякс с интервалом 3 секунды...В каком их методов искать выигрыш? ПЛАНИРУЮ арендовать сервер, но до октября точно будет хостинг.
2) Тестирую сайт на денвере, и лонг поллинг работает хорошо, в консоли браузера статус соединения pending....Но когда нажимаю F5, сайт на денвере зависает, и приходиться перезапускать денвер. КОД взят с ИНТЕРНЕТА, и он же на моем сайте, и он же зависает:

$limit = 25;// number of second the script allowed to run. 
set_time_limit($limit+15);// just to be sure that script will be killed
$time = time();
$last_id = (int)$_POST['id'];
// цикл, проверяющий новые сообщения каждые 5 секунд
while ((time()-$time)<$limit) {
    // checking if something new was added to my test table
    $sql = "SELECT * FROM chat WHERE `msg_id`>".$last_id." ORDER BY `msg_id` DESC LIMIT 50";
    $query = mysql_query($sql);
     if (mysql_num_rows($query)) {   // если есть новые строки в бд  - то обрабатываем и отдаём клиенту
        while ($item=mysql_fetch_array($query)) {
                     // собираем нужные данные из бд
         // и отдаем его клиенту через echo 
        }
        // выбрасываем все данные и выходим, чтобы клиент смог их обработать
        ob_flush();
        flush();
        exit;
    }
    // если данных нет - ждём 5 секунд
    sleep(5);
}
mysql_close();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования