Необходима помощь! Ситуация такая:
платформа php+MySQL
1. есть страничка сайта которая через ajax опрашивает базу данных каждую секунду (при этом выполняется 1 запрос к базе)
2. Есть резидентный скрипт который работает на сервере и вносит изменения в базу в зависимости от разных условий(скрипт работает с задержкой в 1 сек.) Скрипт в одну секунду выполняет 1-5 запросов к бд(все запросы выполняются очень быстро: до 0.01 сек)
реализован скрипт через бесконечный цикл примерно так:
ignore_user_abort(true);
set_time_limit(0);
while(true)
{
if(!условие_выхода)
{
//делаем действия
}
else
{
break;
}
sleep(1);
}
3. Есть админка сайта(резидентный скрипт запускается и останавливается из админки), которая позволяет стандартно редактировать данные сайта(это не суть важно)
Проблема: когда запускается резидентный скрипт(не важно в фоновом режиме или нет) админка сайта просто виснет до тех пор пока резидентный скрипт не будет отключен!
При этом PHPMyAdmin — летает
Все происходит у меня на рабочем localhost'е (то есть без интернета)
ВСЕ запросы к базе выполняются очень быстро(0.01 сек — макс)! В таблицах по 5-10 записей! поэтому перегрузки нет!
У кого-нибудь есть идеи в чем может быть проблема? почему виснет админка?
Заранее очень благодарен!
С уважением,
Дмитрий
Спустя 6 минут, 53 секунды (4.01.2010 - 14:23) VolCh написал(а):
Цитата |
3. Есть админка сайта(резидентный скрипт запускается и останавливается из админки), которая позволяет стандартно редактировать данные сайта(это не суть важно) |
По-моему важно. Как запускается скрипт?
exec("php srcipt.php >/dev/null")Так?
Спустя 3 минуты, 47 секунд (4.01.2010 - 14:27) Gabriel написал(а):
нифигасе 1-5 запросов в секунду к бд.
пока отправиш пока обработаеш, пока приймеш и отобразиш.
браузер с ума сходит просто
пока отправиш пока обработаеш, пока приймеш и отобразиш.
браузер с ума сходит просто
Спустя 17 минут, 51 секунда (4.01.2010 - 14:45) dimetrius написал(а):
VolCh
скрипт запускается в новом окне браузера через джаваскрипт...
примерно так:
var newWin = window.open('путь к файлу скрипта.php',....);
newWin.focus()
Gabriel
браузер делает запрос на сервер каждую 1 секунду
Скрипт который вызывает браузер делает от 1го до 5 запросов к бд...
в 90% случаев это 1 запрос
Дальше скрипт с сервера передает на браузер ответ и тот его обрабатывает
Для современных браузеров - это вообще не нагрузка!
скрипт запускается в новом окне браузера через джаваскрипт...
примерно так:
var newWin = window.open('путь к файлу скрипта.php',....);
newWin.focus()
Gabriel
браузер делает запрос на сервер каждую 1 секунду
Скрипт который вызывает браузер делает от 1го до 5 запросов к бд...
в 90% случаев это 1 запрос
Дальше скрипт с сервера передает на браузер ответ и тот его обрабатывает
Для современных браузеров - это вообще не нагрузка!
Спустя 5 минут, 23 секунды (4.01.2010 - 14:50) Gabriel написал(а):
dimetrius
пока браузер выводит результат получает новые данные и начинает выводить их.
или я не прав?
пока браузер выводит результат получает новые данные и начинает выводить их.
или я не прав?
Спустя 2 минуты, 34 секунды (4.01.2010 - 14:53) VolCh написал(а):
dimetrius
а нужно его в браузере открывать, если он резидентный? И, кстати, там не может быть, что ограничения браузера (2 на один хост) срабатывают?
а нужно его в браузере открывать, если он резидентный? И, кстати, там не может быть, что ограничения браузера (2 на один хост) срабатывают?
Спустя 15 минут, 30 секунд (4.01.2010 - 15:08) dimetrius написал(а):
Gabriel
нет... там все гораздо быстрее происходит! еще и простои образовываются!
VolCh
нет... там все гораздо быстрее происходит! еще и простои образовываются!
VolCh
Цитата |
а нужно его в браузере открывать, если он резидентный? |
болжна быть возможность из админки запускать и останавливать этот скрипт...
а ignore_user_abort(true) обеспечивает работу скрипта после закрытия окна в котором он запустился
Цитата |
И, кстати, там не может быть, что ограничения браузера (2 на один хост) срабатывают? |
не слышал о таком! не понимаю почему тут должно работать какое-то ограничение! вообще все это происходит в одном браузере-на разных вкладках! или я чего-то не понял
Спустя 2 часа, 32 минуты, 24 секунды (4.01.2010 - 17:41) VolCh написал(а):
dimetrius
запустить я показал выше как можно, остановить тока удобно не знаю как, файл может делать и в условиях проверять
Один браузер, если чего не путаю, может обращаться одновременно только к 2 урлам на одном домене, типа чтоб сервер/канал не перегружать
запустить я показал выше как можно, остановить тока удобно не знаю как, файл может делать и в условиях проверять

Один браузер, если чего не путаю, может обращаться одновременно только к 2 урлам на одном домене, типа чтоб сервер/канал не перегружать
Спустя 52 минуты, 29 секунд (4.01.2010 - 18:33) glock18 написал(а):
Цитата (VolCh @ 4.01.2010 - 14:41) |
Один браузер, если чего не путаю, может обращаться одновременно только к 2 урлам на одном домене, типа чтоб сервер/канал не перегружать |
впервые слышу такое. у меня вроде как постоянно куча вкладок открыто бывает. и на одном домене полно. думается, что ты что-то попутал

dimetrius
опиши детально характер зависания. вообще весь процесс, когда у тебя админка зависает и как она это делает. все по шагам с самого начала.
Спустя 4 часа, 11 секунд (4.01.2010 - 22:33) dimetrius написал(а):
glock18
Админка зависает сразу после того как запускаю резидентный скрипт!
Зависание происходит следующим образом: пытаюсь открыть любую другую страницу админки... процесс загрузки данных начинается и останавливается! на страницу ничего не выводит! и так продолжает висеть до тех пор пока не отключу резидентный скрипт (делаю я это через phpMyAdmin-соответвующий флаг убираю)
Что еще заметил:
1.Зависание наблюдается во всех браузерах!
2.зависает не только админка, но и любой мой сайт на локалхосте - это навело на мысль, что висит полностью апаче, однако ВСЕ ВЕЛИКОЛЕПНО РАБОТАЕТ, если параллельно запустить другой браузер и попробывать из него загрузить админку или любой другой сайт на локалхосте! поэтому мне кажется это не апач
Админка зависает сразу после того как запускаю резидентный скрипт!
Зависание происходит следующим образом: пытаюсь открыть любую другую страницу админки... процесс загрузки данных начинается и останавливается! на страницу ничего не выводит! и так продолжает висеть до тех пор пока не отключу резидентный скрипт (делаю я это через phpMyAdmin-соответвующий флаг убираю)
Что еще заметил:
1.Зависание наблюдается во всех браузерах!
2.зависает не только админка, но и любой мой сайт на локалхосте - это навело на мысль, что висит полностью апаче, однако ВСЕ ВЕЛИКОЛЕПНО РАБОТАЕТ, если параллельно запустить другой браузер и попробывать из него загрузить админку или любой другой сайт на локалхосте! поэтому мне кажется это не апач
Спустя 11 часов, 35 минут, 36 секунд (5.01.2010 - 10:09) vagrand написал(а):
dimetrius
Если скрипт всеравно работает со sleep(1), то я бы порекомендовал запускать его по крону, через каждую секунду.
Если при этом нудно чтобы скрипт был запущен в одном экземпляре, то можно в начале скрипта допилить проверку, например создавая файл.
Если скрипт всеравно работает со sleep(1), то я бы порекомендовал запускать его по крону, через каждую секунду.
Если при этом нудно чтобы скрипт был запущен в одном экземпляре, то можно в начале скрипта допилить проверку, например создавая файл.
Спустя 3 часа, 24 минуты, 27 секунд (5.01.2010 - 13:34) VolCh написал(а):
glock18
Цитата |
Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion. |