Форум сетевых администраторов
Показаны 9 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Ограничение на выполнение Php-скрипта (http://netadmin.ws/forum/showthread.php?threadid=11198)


Помещено Jovani 09-11-2005 в 12:49:

Ограничение на выполнение Php-скрипта

Интересует, есть ли какие легкие способы ограничить выполнение PHP-скрипта по частоте запроса?

То есть, имеется скрипт, который создает достаточно большую нагрузку в БД MySQL.
При стечении обстоятельств, когда большое количество посетителей начинают его использовать, начинаются жуткие "тормоза" сервера.
Есть идея, не знаю, насколько она хороша - ограничить использование этого скрипта по времени.
Например, установить каким либо образом, не более 10-ти раз в минуту.

Может есть какие другие соображения и идеи, по данной ситуации?


Помещено zeev 09-11-2005 в 13:06:

хм я бы предложил в скрипте записывать в файл последню дату выполнения
и делать проверку, если разница между текущей датой и датой последнего выполнения меньше 6 секунд
выдавать сообще Server Busy


Помещено Jovani 09-11-2005 в 13:15:

Кстати, сперва, у меня была у меня идея, просто мерять загрузку проца, и соответственно ставить условие - давать допуск или нет.
Но не получилось "стандартными" средствами померять, скорее всего из-за SafeMode.


Помещено zeev 09-11-2005 в 13:18:

ну померять нагрузку можно, только ты тогда ограничишь доступ ко всему что не есть хорошо
а так только отдельному скрипту


Помещено Jovani 09-11-2005 в 13:21:

Дык я только в определенном скрипте хотел поставить условие ...
И какие способы есть для определения текущей нагрузки сервера Apache?

Я пытался выяснить так:

PHP:


<?php
    $loadavg_array 
= explode(" ", exec("cat /proc/loadavg"));
    
$loadavg = $loadavg_array[2];
    print(
"Load: " . $loadavg . "%");
?>


Помещено zeev 09-11-2005 в 13:24:

впринципе можно и так, правда тогда ты будешь держать сервер в определенной нагрузке постоянно
а проверяй нагрузку простым uptime чере exec или system


Помещено Jovani 09-11-2005 в 13:26:

Так у меня не получилось.
Скорее всего нет доступа к cat/proc/loadavg


Помещено zeev 09-11-2005 в 13:28:

хм или модуль su_exec врублен
попробуй exec("uptime")


Помещено Jovani 09-11-2005 в 14:43:

zeev спасибо, конечно попробую, но пока подумаю над другими вариантами. Может кто-то, еще что-то подскажет ...


Формат времени GMT. Текущее время 02:44.
Показаны 9 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.