ФорумПрограммированиеPHP для идиотов → Обновление данных на странице, если есть обновление в бд

Обновление данных на странице, если есть обновление в бд

  • iphine5g

    Сообщения: 221 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 8:24

    Допусти есть у нас страница, на которую данные подгружаются динамично по средствам ajax. Но вся соль в том что изменения вносятся не текущим пользователем, а другими.

    То есть пользователь должен зайти на страницу и получать без перезагрузки страницы данные которые внес другой пользователь. К примеру кто знаком с социальной сетью вконтакте видело как там приходят сообщения - как в айсикью.
    Я конечно к примеру могу задать получения данных на какое либо событие, к примеру (образно) движение мыши) но это будет нехило нагружать. Слишком много будет запросов. Так вот, как такое делается вообще? Как мне сделать запрос если данные были внесены новые ?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 4 декабря 2011 г. 8:35, спустя 11 минут

    Long polling
    Спустя 19 сек.
    Только сразу говорю - на пхп это не реализовать
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 4 декабря 2011 г. 9:24, спустя 48 минут 32 секунды

    на пхп это не реализовать

    phpdaemon.net, не?
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 10:22, спустя 58 минут 40 секунд

    setTimeOut()
    и функция которая чекает обновления
    раз в 5 секунд к примеру
  • iphine5g

    Сообщения: 221 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 11:09, спустя 46 минут 36 секунд


    setTimeOut()
    и функция которая чекает обновления
    раз в 5 секунд к примеру
    не жирно?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 4 декабря 2011 г. 11:14, спустя 4 минуты 52 секунды

    phpdaemon.net

    Не, php так устроен, что не может в асинхронность, а что за лонг запросы без асинхронности?
    Спустя 81 сек.

    setTimeOut()
    и функция которая чекает обновления
    раз в 5 секунд к примеру


    Ну во первых тогда setInterval, во вторых это плохо для сервера
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 4 декабря 2011 г. 12:11, спустя 57 минут 32 секунды

    phpDaemon — asynchronous server-side framework of network applications implemented in PHP using famous libevent which makes possible to handle hundreds and thousands of simultaneous connections.
    Спустя 168 сек.
    даже так

    Its master process spawns a bunch of worker-processes (workers) that run your applications. Each worker doesn't block (sleep) at all, and has event-driven architecture.
    Designed for highload.
    Спустя 36 сек.
    но лично я использую nodejs
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 4 декабря 2011 г. 14:51, спустя 2 часа 39 минут 43 секунды

    Как можно реализовать АСИНХРОННОСТЬ на php, если её там НЕТУ? Только ФОРКАМИ, а ты представь себе на КАЖДОГО пользователя свой ПРОЦЕСС, и еще хуже если запущу я рекурсивно опрос и задержку коннектов с твоего сервера и в итоге у тебя всё зависнет и накроется медным тазом от нехватки оперативы за одну секунду (ну может две)
    Спустя 59 сек.
    Это я даже еще слабо сказал - по несколько процессов на каждого пользователя, ведь он может несколько вкладок открыть
    Спустя 213 сек.
    Dynamic spawning workers

    что и требовалось доказать - он на каждый коннект вешает воркер (т.е. делает fork() или pctnl_fork не помню как в пхп)
    Спустя 145 сек.
    http://php.net/manual/en/function.pcntl-fork.php
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 14:59, спустя 8 минут 14 секунд


    phpdaemon.net

    Не, php так устроен, что не может в асинхронность, а что за лонг запросы без асинхронности?
    Спустя 81 сек.

    setTimeOut()
    и функция которая чекает обновления
    раз в 5 секунд к примеру


    Ну во первых тогда setInterval, во вторых это плохо для сервера

    нельзя быть таким пессимистичным, или это роль гуру разлагает сознание?

    function CheckNewMessages() {
    $.post(
    'http://bla.net/action/mail',
    {
    'op' : 'new_messages'
    },
    function(data) {
    if (data.result == 'error') {
    UIAlert(data.error);
    } else {
    if (data.new_messages > 0) {
    $('#span_new_messages').html('('+data.new_messages+')');
    } else $('#span_new_messages').html(' ');
    if (data.trade_requests > 0) {
    $('#span_trade_requests').html('('+data.trade_requests+')');
    } else $('#span_trade_requests').html(' ');
    }
    },
    'json'
    );


    setTimeout('CheckNewMessages()', 10000);

    }

    CheckNewMessages() ;

    вызов никто не мешает закешировать, тем же мемкешем, и обновлять кроном скажем для активных юзеров. да кто собрался это мутить не будет надеюсь юзать пятибаксовый виртуал
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 4 декабря 2011 г. 15:00, спустя 1 минуту 12 секунд

    Faster, и где тут у тебя Long-Pooling?)
    Сапожник без сапог
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 15:02, спустя 1 минуту 37 секунд

    я жалкий неудачник, не достойный целовать твои ноги :)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 4 декабря 2011 г. 15:13, спустя 11 минут 18 секунд


    я жалкий неудачник, не достойный целовать твои ноги :)
    тото же
    Сапожник без сапог
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 4 декабря 2011 г. 16:23, спустя 1 час 10 минут 6 секунд

    вызов никто не мешает закешировать, тем же мемкешем

    Что? Кого закешировать? Смысл технологии тогда? Да и как ты его собрался "кешировать мемкешем" - вызов то к серверу будет. Суть то понимаешь вообще? Или для тебя всё что сложно пониманию есть гуру-технологии?) Для твоих полтора посетителей в месяц твоя сет интервал вполне ничего так. Сет таймаут один раз срабатывает только, я тебе выше написал используй сет интервал, а то у тебя вообще бессмысленный код получается
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 4 декабря 2011 г. 17:05, спустя 42 минуты 7 секунд

    ага, ты прав
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 4 декабря 2011 г. 20:06, спустя 3 часа 51 секунду

    мона pusher потыркать, особо не вникал, но ссылка с примером есть - http://net.tutsplus.com/tutorials/javascript-ajax/getting-real-time-with-pusher/
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!