Обрабатывать очереди в бесконечном цикле ⇐ Php
Обрабатывать очереди в бесконечном цикле
у нас есть онлайн-игра на PHP, которая требует выполнения задач каждую секунду. В настоящее время мы делаем это, каждую минуту запуская задание cron для некоторого нашего сценария с помощью команды curl -s, чтобы каждую секунду обрабатывать некоторые задачи с помощью цикла for целая минута с таймаутом 60 с.
С этим методом мы столкнулись с двумя проблемами:
1- иногда запросы занимают более 1 минуты, что затем приводит к потере данных из-за таймаута 2- если мы удалим тайм-аут, иногда мы сталкиваемся с проблемами с высокой загрузкой процессора
должно быть даже вторым, игра в основном на этом основана.
наш текущий код:
set_time_limit(65); для ($i = 0; $i < 59; ++$i){ $this->doThings(); спать(1); } Я думал использовать while вместо for, чтобы рассчитать время со 100% точностью. Это лучше?
Задачи обычно не тяжелые, и наши квесты максимально оптимизированы.
Я попытался увеличить лимит времени ожидания и попытаться увеличить net_write_timeout в mysql cnf, это, похоже, хорошо решило проблему, но привело к перегрузке процессора..
Мне нужен официальный способ выполнять наши задачи каждую секунду, не теряя никаких данных и не создавая перегрузку процессора..
у нас есть онлайн-игра на PHP, которая требует выполнения задач каждую секунду. В настоящее время мы делаем это, каждую минуту запуская задание cron для некоторого нашего сценария с помощью команды curl -s, чтобы каждую секунду обрабатывать некоторые задачи с помощью цикла for целая минута с таймаутом 60 с.
С этим методом мы столкнулись с двумя проблемами:
1- иногда запросы занимают более 1 минуты, что затем приводит к потере данных из-за таймаута 2- если мы удалим тайм-аут, иногда мы сталкиваемся с проблемами с высокой загрузкой процессора
должно быть даже вторым, игра в основном на этом основана.
наш текущий код:
set_time_limit(65); для ($i = 0; $i < 59; ++$i){ $this->doThings(); спать(1); } Я думал использовать while вместо for, чтобы рассчитать время со 100% точностью. Это лучше?
Задачи обычно не тяжелые, и наши квесты максимально оптимизированы.
Я попытался увеличить лимит времени ожидания и попытаться увеличить net_write_timeout в mysql cnf, это, похоже, хорошо решило проблему, но привело к перегрузке процессора..
Мне нужен официальный способ выполнять наши задачи каждую секунду, не теряя никаких данных и не создавая перегрузку процессора..
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Анализ открытых файлов, застрявших в бесконечном цикле, для инструментов C/C++ (IntelliSense)
Anonymous » » в форуме C++ - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Анализ открытых файлов, застрявших в бесконечном цикле, для инструментов C/C++ (IntelliSense)
Anonymous » » в форуме C++ - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-