[ abyss @ 25.02.2005. 12:33 ] @
ovako... posle opisa problema sledi kod...

pustim skriptu, izvrsava se 5minuta i kaze cannot conect...
uderim refresh i izvrsi se...

lepo pamti sesije, ali samo sto ne stigne da loguje visitor-a...

Code:

<?php
session_start();

function getIP() {
if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
else $ip = "UNKNOWN";
return $ip;
};

include("db.php");

if(!session_is_registered('counted')){
    $agent = $_SERVER['HTTP_USER_AGENT'];
    $ip = getIP();
    $host = @GetHostByAddr($ip);
    $ref = $_SERVER['HTTP_REFERER'];
    $dtime = time();
    if($ref == ""){
        $ref = "None";
    }
    session_register('counted');
    $hd=mysql_connect($host, $user, $pass) or die("Cannot connect!");
    mysql_select_db($db, $hd);
    $res=mysql_query("insert into visitors (ip, time, referer, agent, host) values ('".$ip."', '".time()."','".$ref."','".$agent."','".$host."')", $hd);
};

    $hd=mysql_connect($host, $user, $pass) or die("Cannot connect!");
    mysql_select_db($db, $hd);

    $res=mysql_query("select count(id) from visitors", $hd);
    $no = mysql_result($res,0);

    $res=mysql_query("select count(ip) from visitors where ((time)>(".time()."-86400))", $hd);
    $sata24 = mysql_result($res,0);

    $res=mysql_query("select count(ip) from visitors where ((time)>(".time()."-300))", $hd);
    $trenutno = mysql_result($res,0);
?>
[ Goran Rakić @ 26.02.2005. 13:26 ] @
Primeti da si se na db konektovao 2 puta ukoliko sesija nije registrovana. Verovatno imas ogracnicenje na samo jedno logovanje tako da kada sesija nije registrovana, on se unutar if-a konektuje, upise sta treba i onda izvije na timeout-u drugog konektovanja (koje je nepotrebno jer si se vec konektovao). Drugi put, sesija je registrovana i skripta radi samo jedan connect.

Resenje - posto se konektujes i u jednom i u drugom slucaju, prebaci kod za konektovanje iznad if-a, a onaj u if-u izbaci. Drugo resenje je da dodas mysal_close unutar if-a ali je to ovde nepotrebno jer ces se neposredno nakon toga opet konektovati.

Znaci:

Code:

    ...
    require_once('db.php');
    $hd=mysql_connect($host, $user, $pass) or die("Cannot connect!");
    mysql_select_db($db, $hd);
    if(... {
        ....
     }

    $res=mysql_query("select count(id) from visitors", $hd);
    ....
    mysql_close($hd); // kako je kraj skripte ovo i nije neophodno, PHP to radi sam     
[ abyss @ 26.02.2005. 13:44 ] @
Probacu pa javiti, hvala!

--
"Once hadst thou passions and calledst them evil. But now hast thou only
thy virtues: they grew out of thy passions."
http://www.e-abyss.co.sr ili mailto:[email protected]