X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=0dbb35895b44243736d7698acfc383173531e60c;hb=d9d7c36af2f5ec4c0688e77e58d3d0b930cd2658;hp=8663ca29a59a01101a9fee7758b51e039807fc56;hpb=6a7088b090b78123ccfaa3ba00e1ea81647b173c;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 8663ca2..0dbb358 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -284,6 +284,61 @@ Copyright 2006-2009 Matteo Nasta
version '.$G_brisk_version.'

Copyright 2006-2009
Matteo Nastasi (aka mop)

'); +function file_lock($fname, $is_exclusive) +{ + if (($res = fopen($fname, "r+")) == FALSE) { + return (FALSE); + } + + if (flock($res, ($is_exclusive ? LOCK_EX : LOCK_SH)) == FALSE) { + fclose($res); + return (FALSE); + } + + return ($res); +} + +function file_unlock($res) +{ + if ($res != FALSE) { + flock($res, LOCK_UN); + fclose($res); + } +} + +function webservers_exceeded() +{ + return(file_exists(PROXY_PATH."/webservers_exceded.flag")); +} + +function webservers_check() +{ + GLOBAL $G_webserver_max; + + $ct = 0; + + $dh = opendir('/proc'); + while (($file = readdir($dh)) !== false) { + if (preg_match('/[0-9]+/', $file)) { + $cmdline = explode("\0", file_get_contents('/proc/'.$file.'/cmdline')); + // echo "xxx".$cmdline[0].$n; + if (strstr('/usr/sbin/apache2', $cmdline[0]) != FALSE) { + // echo "yyy".$cmdline[0].$n; + $ct++; + } + } + } + closedir($dh); + + if ($ct >= $G_webserver_max) { + touch(PROXY_PATH."/webservers_exceded.flag"); + } + else { + unlink(PROXY_PATH."/webservers_exceded.flag"); + } + return ($ct); +} + $escinp_from = array( "\"" ); $escinp_to = array( """ ); @@ -1084,6 +1139,7 @@ class Room { return ($ismod); } + webservers_check(); // FIXME BRISK4: include for each kind of table require_once("${G_base}briskin5/Obj/briskin5.phh");