Zergius2
Новичок
Добрый день,
По мнению техподдержки хостинга, данный скрипт вызывает ошибки сервера (о которых в свою очередь можно почитать здесь
Данный скрипт работает как серверная часть чата реализованного с помощью long polling "технологии". Т.е. клиент с помощью ajax запрашивает этот скрипт, а скрипт отдаёт данные, только если есть новые; если скрипт завершается по истечении $limit секунд, то клиент опять его запрашивает. Скрипт работает нормально. Но, читайте вышеуказанную ссылку...
Есть ли здесь какие либо ошибки могущие подвесить этот скрипт на сервере? Или что иное...
По мнению техподдержки хостинга, данный скрипт вызывает ошибки сервера (о которых в свою очередь можно почитать здесь
Данный скрипт работает как серверная часть чата реализованного с помощью long polling "технологии". Т.е. клиент с помощью ajax запрашивает этот скрипт, а скрипт отдаёт данные, только если есть новые; если скрипт завершается по истечении $limit секунд, то клиент опять его запрашивает. Скрипт работает нормально. Но, читайте вышеуказанную ссылку...
Есть ли здесь какие либо ошибки могущие подвесить этот скрипт на сервере? Или что иное...
PHP:
session_start();
$dblocation = "mmm";
$dbname = "mmm";
$dbuser = "mmm";
$dbpasswd = "mmm";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_query ("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");
mysql_select_db($dbname, $dbcnx);
session_write_close(); //тут берем данные из сессии, и закрываем её
$limit = 25;// number of second the script allowed to run.
set_time_limit($limit+15);// just to be sure that script will be killed
$time = time();
$last_id = (int)$_POST['id'];
// цикл, проверяющий новые сообщения каждые 5 секунд
while ((time()-$time)<$limit) {
// checking if something new was added to my test table
$sql = "SELECT * FROM chat WHERE `msg_id`>".$last_id." ORDER BY `msg_id` DESC LIMIT 50";
$query = mysql_query($sql);
if (mysql_num_rows($query)) { // если есть новые строки в бд - то обрабатываем и отдаём клиенту
while ($item=mysql_fetch_array($query)) {
// собираем нужные данные из бд
// и отдаем его клиенту через echo
}
// выбрасываем все данные и выходим, чтобы клиент смог их обработать
ob_flush();
flush();
exit;
}
// если данных нет - ждём 5 секунд
sleep(5);
}
mysql_close();