PHP инфинитивный цикл или jQuery setInterval?

Js:

<script>
function cometConnect(){
    $.ajax({
          cache:false,
          type:"post",
          data:'ts='+1,
          url: 'Controller/chatting',
          async: true,
          success: function (arr1) {
              $(".page-header").append(arr1);
          },
          complete:function(){
            cometConnect(true);
            nerr=false;
          },
          dataType: "text"
        }); 
}
cometConnect();
</script>

Php:

public function chatting()
{
    while(true)
    {
       if(memcache_get(new_message))
          return new_message; 
       sleep(0.5);
    }
}

Является ли это лучшим решением, чем установка setInterval, который подключается к методу PHP, который возвращает сообщение, если оно есть, каждые 1 секунду (1 секунда увеличивается +0.25 каждые 5 секунд, допустим)?

Если бы я использовал первое решение, я мог бы, вероятно, использовать sleep(0.5), это дало бы мне сообщения мгновенно, потому что php цикл дешевый, не так ли?

Итак, какое решение лучше (более того, какое занимает меньше ресурсов?). Потому что таких чатов будет сотни.

Плюс, может ли первое решение вызвать проблемы? Скажем, я буду перезагружать страницу или останавливать выполнение каждые 30 секунд, чтобы не получить 502 Bad Gateway.

EDIT: Я считаю, что второе решение лучше, поэтому я собираюсь переделать свой сайт, но мне просто интересно, может ли это вызвать проблемы у пользователя или нет? Может ли произойти что-то не ожидаемое? Первая проблема, которую я заметил, заключается в том, что вы не можете перейти на другую страницу, пока не появится хотя бы одно новое сообщение.

5
задан good_evening 26 December 2011 в 21:11
поделиться