[ kelja @ 01.01.2008. 14:38 ] @
Napravio sam neki mali hit counter, koji koristi obican text file za belezenje poseta(i narocito ip adresa). Evo koda: Code: <?php session_start(); //$hits=file('file_long.txt'); $site="http://www.sinisake.com/hit_counter/" ; //enter your site name $ip = GetHostByName($_ENV['REMOTE_ADDR']); /*for($i=0;$i<count($hits);$i++){ $counted=$i+1; if(eregi($ip,$hits[$i])){ $ip_exists=1; } }*/ $handle = @fopen('file_long.txt', "r"); if ($handle) { $i=0; while (!feof($handle)) { $lines[] = fgets($handle); $i++; $counted=$i; } fclose($handle); } if($_SESSION['visited']==1||$_COOKIE['Visited']!=""||$ip_exists==1){ $been_here=1; } if($been_here!=1){ $fp = fopen ("file_long.txt", "a+"); fwrite ($fp, "||$ip\n"); fclose ($fp); } if(!isset($_COOKIE['Visited'])){ setcookie("Visited","$site",time()+60*60*24*300000); } if(!isset($_SESSION['visited'])){ $_SESSION['visited']=1; } /* echo $_SESSION['visited']."<br>"; echo $_COOKIE['Visited']."<br>"; echo $ip_exists."<br>"; */ ?> <style type="text/css"> #holder{ font:Arial, Helvetica, sans-serif; font-size:24px; } .black { color:#121212; } .grey { color:#777777; } .light_grey { color:#D3D3D3; } </style> <?php //Display Hits/Views!!! $one_less=$counted-1; $two_less=$counted-2; $one_more=$counted+1; $two_more=$counted+2; echo " <div id='holder'> <div class='light_grey'>$two_less</div>\n <div class='grey'>$one_less</div>\n <div class='black'>$counted views so far!</div>\n <div class='grey'>$one_more</div>\n <div class='light_grey'>$two_more</div> </div>\n"; //Display Hits/Views!!! ?> Znao sam da file funkcija moze da izazove probleme sa velikim fajlovima, pa sam probao i fgets, ali uzalud. Tekst fajl ima 149 205 linija i desava se ovo: http://www.sinisake.com/index_long.php Error log file, poslednji upis: [01-Jan-2008 13:46:04] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1048576 bytes) in /.... on line 16 Da li je ovo normalna pojava za shared hosting? Zar je 149 205 linija(~1,5 mb) zaista previse za citanje red po red? Da napomenem, sa fajlovima ispod i oko 1 mb(oko 100 000 linija), sve funkcionise ok, ali kad prekoracim te vrednosti, vidite i sami... Da menjam hosting, ili koncepciju skripta(hteo bih da izbegnem bazu, zaista sam mislio da je u ovom slucaju suvisna)? |