Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Простой счетчик посещений (http://forum.oszone.net/showthread.php?t=31499)

Randy 24-10-2003 20:02 215584

Нужен простой счетчик посещений, сохраняющий в один файл всю информацию.
Более всего склоняюсь к .CSV, но не получается произвести запись в конкретную строку, проповал и такой тип "12313;2323;146;" делаю explode и вывод информации отлично, но опять же не могу записать, array (250,3434,2388,2323) тоже не подходит. PHP совсем недавно изучаю, примеров не нашел, только перебор всех строк, а мне надо конкретной. Буду рад помощи, спасибо.

Prisoner 24-10-2003 23:36 215585

Я так понимаю тебе нужно хранить одну строку вида "xxxx;xxxx;xxxx", так? Храни в каком угодно файле (расширение как всегда, тут лишь ширма), считывай строку как из обычного текстового файла, прибавляй куда надо по еденичке и записывай обратно опять-таки как обычную строку, не забыв разделительные ";". И еще погляди на функции блокирования файла когда производишь инкремент счетчика... решение под стать задаче - простое и не продуктивное ибо счетчики есть суть сложнее чем кажутся на первый взгляд :).

lossen 25-10-2003 05:00 215586

и мне тож счетчик... я бы хотел хотя бы мэил.ру, но как зарегистрировать и где (я просто не нашел)? Пробовал искать счетчики через яндекс, не помогло - корявые...

Prisoner 26-10-2003 07:03 215587

lossen
Раксовые счетчики мазевые... прямо по адресу www.rax.ru, который с некоторого времени стал вести на http://www.liveinternet.ru/ посередине странички увидишь пример счетчика и линку как его установить к себе на страничку... все просто и настраеваемо.

Guest 26-10-2003 18:56 215588

Цитата:

Я так понимаю тебе нужно хранить одну строку вида "xxxx;xxxx;xxxx", так?
Нет, Prisoner, не совсем, я имею много файлов, сгенеренных движком, каждая страница записывает значение о посещении в отдельный файл, все, что мне надо - это возможность записывать и считывать все как с базы данных, с одного файла, но без мускула, обходясь единым php. А значения хранимые в файле проще всего сохранить таким образом
id * *value
1 * * 143
3 * * 356
Как записать в такой формат, или хотя бы в такой
2323;2323;2323;445;. Тоисть изменить каждое значение.

Randy 26-10-2003 18:57 215589

Guest это я :)

Prisoner 27-10-2003 00:01 215590

Угу... формат файла у нас такой получается - X;Y. Следовательно, считываем построчно (или весь файл целиком) в массив строк, эксплодим каждую строку, находим нужную строку (по id, ведь так?), приращиваем сколько надо ко второму параметру (здесь php порадует нас прозрачным преобразованием типов), записываем данные обратно либо сшивая обратно массив разделенных данных (шьздщву), либо делая это руками. На все время работы лучше блокировать файлик, потеряем некоторое количество посещений (потери ниже при малой посещаемости и выше если наоборот), но зато все будет корректно... должно быть :).

Randy 30-10-2003 20:15 215591

Спасибо, Prisoner
Стало чуть прозрачнее, но: каким образом заблокировать файл, и как находить по id.
Чето я себя ламером чувствую...

Prisoner 31-10-2003 23:21 215592

На счет блокировки см. описание функции flock.
Находить по ID иначе как в цикле, имхо, не получится - нет спец. средств для этого при работе с ассоциативными массивами (ведь именно с ними придется работать).

Вот маленький пример

Код:

 //Пусть $ID - номер странички на которой есть "счетчик" :)
  //его переадем скрипту в параметре - cnt.php?id=X
  $ID=$_GET["id"];
  $FP = fopen ("counter.csv","r");
  //читаем инфу
  WHILE (!FEOF ($FP))
   {
    $DataStr=FGETS ($FP);
    $Data=EXPLODE(";",$DataStr);
    If ($ID==$Data[0])
      $CntInfo[] = $DataStr;
   }
  fclose ($FP);
  Echo "На сей странице были стопы ".$CntInfo[1]." юзверей."

Не трудно развить пример до полнофункционального счетчика, а то сей лишь выводит числа из файлика... а туда этим скриптиком их надо еще и писАть... угу?


Время: 12:02.

Время: 12:02.
© OSzone.net 2001-