Exploder wrote:Ne nu tu kietas... Aš gi ir atėjau prašyt surast tą klaidą.
Tai niekas gi tau netrukdo klaidas išmoksi susirasti pačiam. Svetimam žmogui analizuoti kažkieno kreivą kodą yra N kartų sunkiau negu tau pačiam, turint omeny, kad nesi nei komentarų parašęs, nei nušvietęs kokiu principu veikia tas scriptas.
Exploder wrote:1fp atidarau failą įrašymui ir perrašau time egzistuojančių online,su antru išvalau jį,su trečiu įrašau į online.
Pagal mane toks orientacinis scriptas, be konkurentinių rašymų tikrinimo (file lock) turėtų atrodyto taip:
<?php
define("_ONLINE_FAILAS", "online.txt"); // reikia rasymo teisiu
define("_ONLINE_TIMEOUT", 120); // sekundemis
function online($kas){
// laiko is sistemos paemimas ir paskaiciavimas, nuo kada irasai laikomi pasene
$laikas = time();
$timeout = $laikas - _ONLINE_TIMEOUT;
// duomenu nuskaitymas ir konvertavimas i masyva
$duomenys = file_get_contents(_ONLINE_FAILAS);
$masyvas = unserialize($duomenys);
// jeigu rezultatas nemasyvas - sukuriam (pradini variantas arba kitos klaidos)
if(!is_array($masyvas)){
$masyvas = array();
}
// irasom/pakeiciam esamo vartotojo laika
$masyvas[$kas] = $laikas;
// istrinam is masyvo visus irasus, kurie yra pasene
foreach($masyvas AS $kas => $laikas){
if($laikas < $timeout){
unset($masyvas[$kas]);
}
}
// duomenu issaugojimas faile
$duomenys = serialize($masyvas);
file_put_contents(_ONLINE_FAILAS, $duomenys);
}
// testavimas
online("testas1");
online("testas2");
online("testas3");
?>