Я пишу социальную облачную игру для Android и использую PHP на сервере. Почти все аспекты игры будут управляться пользователем или пользователем-устройством, поэтому большую часть времени устройство отправляет запрос на сервер, а сервер, в свою очередь, отправляет ответ на устройство. Иногда сервер также отправляет push-сообщения на устройства, но обычно в ответ на обращение устройства одного пользователя к серверу.
Однако есть один особый случай, когда пользователь может установить «таймер», и по истечении заданного времени сервер должен отправить push-сообщения на все устройства. Один из способов сделать это — оставить таймер локальным для устройства пользователя и, как только он сработает, отправить сигнал на сервер для отправки push-сообщений. Однако было несколько причин, по которым я не хотел делать это таким образом. Например, если пользователь решает больше не играть или проигрывает игру, технически таймер должен оставаться в игре.
Я искал метод в PHP, который позволил бы мне сделать что-то подобное, но все, что я придумал, это будильники, которые не мне нужны. Я также подумал о задачах cron, и действительно, они были рекомендованы для подобных ситуаций на этом и других форумах, но, поскольку это не повторяющееся событие, а, скорее, однократное событие, которое происходит в произвольный момент времени, я не знал, что работа cron - это то, что я хочу.
Мое текущее лучшее решение включает задание cron, которое запускается раз в секунду и проверяет, произойдет ли одно из этих событий в следующую секунду, и, если это так, отправляет push-сообщения. Это правильный способ справиться с этой ситуацией, или есть лучший инструмент, который я еще не нашел?
while(true){system('php /path/to/file &'); sleep(1);}
- person shesek   schedule 17.08.2011