Здравствуйте! Сделал чат: AJAX EventSource и php на стороне сервера отдельный файл с бесконечным циклом. Все работает, НО когда нажимаешь "обновить" страницу, сервер ничего не шлет пока не освободится файл с циклом (30 сек по умолчанию макс время работы php скрипта ) как это исправить? все перепробовал. Сервер даже не запускает скрипт сайта на выполнение пока процес не освободится. код на java function chat(){ var s = new EventSource('/parts/chat.php'); var div=document.getElementById("chat"); s.onmessage=function(e){ div.innerHTML += e.data + '<br>'; div.scrollTop += 100; } код на PHP <?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); session_start(); include ("../include/function.php"); while(true){ chatout("main",$_SESSION["chatid"]); sleep(1); } ?>
Re: Сервер не запускает скрипт на выполнение пока он не осво 1. Зачем бесконечный цикл? 2. Что такое chatout? Вот минута гугления и готовый пример http://www.techumber.com/2012/11/Simple-Chat-Engine-Using-H ... d-PHP.html
Re: Сервер не запускает скрипт на выполнение пока он не осво chatout() - это функция, которая подключается в базе и отправляет новые сообщения, если есть. она работает. в Вашем примере есть один недочет. Он не будет держать EventSource открытым, а отработает и отключится. В следствии этого java на компе пользователя опять попросит запустить файл через 3 сек по умолчанию. т.е. получается постоянные запросы с периодом 3 сек. тогда EventSource и не нужен. или я не прав? просто я не спец)
Re: Сервер не запускает скрипт на выполнение пока он не осво Зачем передаешь в функцию глобальную переменную $_SESSION["chatid"]? Она глобальная. Откуда ты вообще взял 3 секунды а не допустим 10 или час? Смотрю на тот код что то не понимаю там же этого нет. Там есть демо, ты проверял? То что ты используешь называется javascript а не java.
Re: Сервер не запускает скрипт на выполнение пока он не осво 3 секунды это умолчание от EventSource. Если соединение разорвано с сервером, реконнект через 3 сек. Кстати спасибо за ответы и интерес к теме! $_SESSION["chatid"] можно и не кидать, без разницы. я в ней храню id последнего сообщения. Или так нельзя? когда появилась проблема, я вынес из файла все, что работает. Теперь если цикл есть висит. Причем перейти на другую страницу связанную с чатом тоже не дает, пока соответственно не отработает. Цель у меня сделать чат без постоянных запросов. а без цикла php не будет держать соединение. Или как?