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!!!
?>
<?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)?