[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с резидентным скриптом php+MySQL
dimetrius
Здравствуйте!
Необходима помощь! Ситуация такая:
платформа 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 запрос
Дальше скрипт с сервера передает на браузер ответ и тот его обрабатывает

Для современных браузеров - это вообще не нагрузка!

Спустя 5 минут, 23 секунды (4.01.2010 - 14:50) Gabriel написал(а):
dimetrius
пока браузер выводит результат получает новые данные и начинает выводить их.
или я не прав?

Спустя 2 минуты, 34 секунды (4.01.2010 - 14:53) VolCh написал(а):
dimetrius
а нужно его в браузере открывать, если он резидентный? И, кстати, там не может быть, что ограничения браузера (2 на один хост) срабатывают?

Спустя 15 минут, 30 секунд (4.01.2010 - 15:08) dimetrius написал(а):
Gabriel
нет... там все гораздо быстрее происходит! еще и простои образовываются!

VolCh
Цитата
а нужно его в браузере открывать, если он резидентный?

болжна быть возможность из админки запускать и останавливать этот скрипт...
а ignore_user_abort(true) обеспечивает работу скрипта после закрытия окна в котором он запустился

Цитата
И, кстати, там не может быть, что ограничения браузера (2 на один хост) срабатывают?

не слышал о таком! не понимаю почему тут должно работать какое-то ограничение! вообще все это происходит в одном браузере-на разных вкладках! или я чего-то не понял

Спустя 2 часа, 32 минуты, 24 секунды (4.01.2010 - 17:41) VolCh написал(а):
dimetrius
запустить я показал выше как можно, остановить тока удобно не знаю как, файл может делать и в условиях проверять smile.gif

Один браузер, если чего не путаю, может обращаться одновременно только к 2 урлам на одном домене, типа чтоб сервер/канал не перегружать


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


впервые слышу такое. у меня вроде как постоянно куча вкладок открыто бывает. и на одном домене полно. думается, что ты что-то попутал smile.gif поправь если не так.

dimetrius
опиши детально характер зависания. вообще весь процесс, когда у тебя админка зависает и как она это делает. все по шагам с самого начала.

Спустя 4 часа, 11 секунд (4.01.2010 - 22:33) dimetrius написал(а):
glock18
Админка зависает сразу после того как запускаю резидентный скрипт!
Зависание происходит следующим образом: пытаюсь открыть любую другую страницу админки... процесс загрузки данных начинается и останавливается! на страницу ничего не выводит! и так продолжает висеть до тех пор пока не отключу резидентный скрипт (делаю я это через phpMyAdmin-соответвующий флаг убираю)

Что еще заметил:
1.Зависание наблюдается во всех браузерах!
2.зависает не только админка, но и любой мой сайт на локалхосте - это навело на мысль, что висит полностью апаче, однако ВСЕ ВЕЛИКОЛЕПНО РАБОТАЕТ, если параллельно запустить другой браузер и попробывать из него загрузить админку или любой другой сайт на локалхосте! поэтому мне кажется это не апач

Спустя 11 часов, 35 минут, 36 секунд (5.01.2010 - 10:09) vagrand написал(а):
dimetrius

Если скрипт всеравно работает со 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.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.