Код: Выделить всё
while($lastTime == $_SESSION['lastTime']){
sleep(10);
}
Но это не работает! Цикл никогда не завершится, поскольку скрипт PHP не может получать новые данные, пока скрипт находится в цикле while. И поэтому SESSION['lastTime'] не будет обновляться!
Я думал, что можно запустить несколько копий одного и того же скрипта. Но, похоже, это не так! Есть ли другой способ сохранить соединение с сервером? Извините, если это простой вопрос, но у меня нет необходимого понимания.
Если одновременно может работать только одна копия, как сервер может поддерживать несколько соединений?
Изменить 2025-12-04
У меня есть один PHP-скрипт, который имеет две функции. Сначала получает данные и сохраняет их в базе данных. Также подготовьте пакет данных для SSE ($_SESSION['sse']) и новую дату для пакета данных ($_SESSION['lastTime']).
Я протестировал его с одним клиентом и обнаружил, что допустил ошибку. Если новые данные недоступны, мне приходится держать клиентское соединение открытым. И я сделал это, запустив цикл while, пока не изменится значение LastTime!
Клиентская сторона работает нормально, но у меня есть проблемы с пониманием того, как сохранять клиентское соединение открытым.
Я понял, что если я сделаю это с помощью цикла while, PHP-скрипт не будет принимать данные, которые отправляются в скрипт примерно каждые 3 минуты. Поэтому SESSION['lastTime'] не обновляется, и скрипт не может выйти из цикла! Я могу это проверить, ведь значения в базе данных скриптом не обновляются.
Я не понимаю, почему не открывается еще одна копия скрипта! В чем причина этого?
Что мне нужно изменить, чтобы сервер мог одновременно поддерживать открытые соединения с несколькими клиентами, а скрипт все еще мог получать обновления от другой программы?
Сессия_start вызывается каждый раз, когда скрипт открывается. Разве невозможно запускать все одни и те же сценарии с одним и тем же идентификатором сеанса, и когда одна копия изменила значение сеанса, это не отображается для уже запущенного сценария.
Извините, я могу писать сценарии PHP, но у меня мало знаний о взаимосвязях между различными функциями.
Подробнее здесь: https://stackoverflow.com/questions/798 ... connection
Мобильная версия