Всем привет!
Делаю некое голосование для аватарок ВК. Суть в том, что дается 30 секунд, люди голосуют и после 30 сек запускает функция, которое делает определенное действие.
Риал-тайм реализован через сокеты на пхп
И вот для такого "серверного" таймера придумал следующие реализации:
1. На клиенте стоит скрипт, который по завершении раунда отправляет запрос на сокет сервер. Предполагаемые минусы - любой может "подшаманить код" и начать раунд раньше, а так же если на сайте никого нет, срабатывать ничего не будет
2. while + sleep на сокет сервере. Но непонятно, как параллельно основному коду его реализовать
3. Реализовать через разницу в unix-time. То есть перед началом раунда сохраняется текущее время, далее после каждого запроса вычисляется разница времени перед началом раунда и при отправленном запросе, если 30 или больше секунд, запускаем функцию. Минусы - раунд может не длится ровно 30 секунд, а намного дольше
Если это глупый вопрос и уг-реализации, сильно не ругайте, пытаюсь постепенно разобраться в пхп
Ну и собсно вопрос: как реализовать так, чтобы каждые 30 секунд запускалась определенная функция? (ну или каждые 30 секунд тот же echo выводить)
sidni, но если поставить sleep 1 секунда, то стопится вся программа. Если сделать while i < 30 со слипом в секунду и i++, а после этого вайла будет находится код для приемаи обработки сообщений из чата, к примеру, то, то новые сообщения обработаются только когда вайл закончится. А мне нужно чтобы все параллельно работало
// Cron.
Не согласен так как крон сам не умеет запускать задачи чаще чем раз в минуту - без колхоза не обойтись, а это уже слишком сложно для данной задачи.
//Риал-тайм реализован через сокеты на пхп
Значит у вас есть cli-скрипт, запускаемый из консоли.
Если сокеты в php реализованы с помощью Ratchet, то вот вам мой ответ по ссылке. клац
Там подробно всё расписано - уверен, что поможет на 100%