0

Вообщем сделал чат на XHR все работает... Но! у меня php скрипт, на который ссылается запрос работает в цикле и вообщем выдает ошибку что скрипт работает больше 30 секунд, я выключил репорт ошибок, поставил максимальное выполнение скрипта на 600 секунд и сейчас вроде все нормально, но это ведь не самый лучший метод решения этой проблемы? Или по другому никак?

Thread
  • 111
  • 8
  • 1
    В 2016 году чаты принято делать на вебсокетах (и не на пхп) – andreymal Aug 09 '16 at 13:04
  • Альтернитивный вариант оптимизировать php скрипт, но это считается плохой практикой. Обычно дешевле докупить 300 серверов чтобы обслуживать запросы, чем выделить время и деньги программисту на оптимизацию. – Arnial Aug 09 '16 at 13:05
  • andreymal, Да, но мне кажется это сути не поменяет сильно, что тут надо постоянно проверять новые сообщения, что на сокетах – Thread Aug 09 '16 at 13:05
  • php умеет с сокетами работать: первая ссылка на хабр в гугле. – Arnial Aug 09 '16 at 13:06
  • @Thread Значит вы не разбираетесь в асинхронщине и событийно-ориентированном программировании :) – andreymal Aug 09 '16 at 13:07
  • Тогда такой вопрос, сильно ли грузит систему скрипт проверки сообщений чата php и сильна ли эта разница с сокетами? – Thread Aug 09 '16 at 13:10
  • Как по-вашему, что компьютеру делать проще: постоянно делать запросы в базу на предмет новых сообщений, или же в момент получения очередного сообщения сразу передавать его получателям? –  Aug 09 '16 at 13:13
  • Хотя да, это вы правы... Но черт подери сколько вещей придется переписать – Thread Aug 09 '16 at 13:15

1 Answers1

0

Лучше ещё возвращайте пустой ответ если скрипт выполняется дольше определённого лимита — для этого задаёте константу максимального времени. При начале обработки ответа делаете замер текущего времени, а потом в цикле проверяете и если текущее время выполнения больше максимального из константы, то возвращаете пустой ответ или пустую структуру.

Mihanik71
  • 3,707
  • 1
    @Naumov но общепринятый и юзаемый всеми, long polling называется – andreymal Aug 09 '16 at 15:05
  • @andreymal да это троль за мной увязался просто – Mihanik71 Aug 09 '16 at 15:06
  • @andreymal если назвать кастыль общепринятым он не станет решением. Так как кастыль - это решение которое не позволяет упасть приложению и маскирует баги. Решение заплатка. Все симптомы на лицо. – Naumov Aug 09 '16 at 15:19
  • @Naumov предложите своё решение. Long polling решает свои задачи и используется на крупных ресурсах. – Mihanik71 Aug 09 '16 at 15:26
  • Какие задачи? Какие ресурсы? – Naumov Aug 09 '16 at 15:37
  • @Naumov например вконтакте юзает в лонгполлинг для апи. Или сий ресурс для вас слишком мелкий? – Алексей Шиманский Aug 09 '16 at 16:32
  • @Naumov vk, fb, яндекс, google. Каждый развил идею в свою сторону и под себя использует, но суть одна и таже – Mihanik71 Aug 09 '16 at 17:35