|
|
|
| Всем привет!
Есть проблема, надеюсь, вы поможете её решить!
Написал, счётчик для страниц, а точнее, сколько раз прочитали. В коде, используется функция flock (запирание файла), записывается и считывается информация, из одного файла. Всё работает нормально, одно время, а потом, файл просто обнуляется, а точнее, в нём, остаётся, всего один символ “|”. Суппорт хостинга, говорит, что это, логическая ошибка скрипта!
Плизззз, гляньте, есть ли в коде ошибка! Я уже, 3 недели парюсь!
Вот код:
[CODE]
<?
if (@$_REQUEST['id'])
{
$file_counter = "base/counter.dat";
$data='';
if (file_exists($file_counter))
{
$fp = fopen($file_counter, "r+");
while (!feof($fp))
{
list($change1,$change2)=explode("|", fgets($fp));
if (@$_REQUEST['id']==$change1)
{
$counter=$change2;
$counter=$counter+1;
if (!feof($fp))
{
$data=$data.$change1.'|'.$counter."\n";
}
else
{
$data=$data.$change1.'|'.$counter;
}
}
else
{
$data=$data.$change1.'|'.$change2;
}
}
}
fclose($fp);
$fp = fopen($file_counter, "a");
flock($fp,LOCK_EX);
if(flock($fp,LOCK_EX)){
ftruncate($fp,0);
fputs($fp, $data);
flock($fp,LOCK_UN);
fclose($fp);
}
}
?>
[/CODE] | |
|
|
|
|
|
|
|
для: Diablo_
(29.04.2006 в 00:20)
| | Замысловато... а что должен делать счётчик? Опишите алгоритм его действия на словах, если не сложно? | |
|
|
|
|
|
|
|
для: cheops
(29.04.2006 в 10:19)
| | Да всё просто! Он подсчитывает, сколько раз прочитали статью, а то есть, нажали на ту, или иную ссылку на сайте, которая есть в базе (base/counter.dat)!
Мне говорят, что бы я делал через (serialize/unserialize). Но я не знаю как с этим работать! | |
|
|
|
|
|
|
|
для: Diablo_
(29.04.2006 в 12:37)
| | Плиззззз, помогите, очень нужно!!!! Проблему никак не решить! | |
|
|
|
|
|
|
|
для: Diablo_
(29.04.2006 в 00:20)
| | А пример файла counter.dat можно? | |
|
|
|
|
|
|
|
для: Саня
(29.04.2006 в 22:57)
| | Да, конечно!
home|1
download|2
kontakt|3
и тд...! | |
|
|
|
|
|
|
|
для: Diablo_
(30.04.2006 в 00:28)
| |
<?php
$arr = file("base/counter.dat");
$fp = fopen("base/counter.dat", "a");
flock($fp, LOCK_EX);
ftruncate($fp, 0);
$id = $_REQUEST["id"];
for ($i=0; $i<count($arr); $i++)
{
list($link, $counter) = explode("|", str_replace ("\n", "", $arr[$i]));
if ($link == $id)
{
$counter += 1;
}
fwrite($fp, $link."|".$counter."\n");
}
flock($fp, LOCK_UN);
?>
|
| |
|
|
|
|
|
|
|
для: WebTech
(30.04.2006 в 11:43)
| | Огромное спасибо!
Постоянно выдаёт ошибку вот в этой строке:
$id = $_REQUEST["id"];
вот эту ошибку:
Notice: Undefined index: id in
Но всё работает отлично! Что нужно дописать? | |
|
|
|
|
|
|
|
для: Diablo_
(30.04.2006 в 14:53)
| | Notice - это еще не ошибка, а уведомление, что выполняемые действия могут быть ошибочными.
Чтобы отключить это, надо в начале скрипта поставить функцию
error_reporting(E_ALL & ~E_NOTICE);
|
либо в php.ini изменить параметр error_reporting точно так же
error_reporting = E_ALL & ~E_NOTICE
|
либо запретить вывод ошибок (тоже в php.ini)
| |
|
|
|
|
|
|
|
для: WebTech
(30.04.2006 в 17:08)
| | Спасибо! разобрался! Достаточно было поставить @! | |
|
|
|