За последние 24 часа нас посетили 22248 программистов и 993 робота. Сейчас ищут 652 программиста ...

Счетчик просмотров с датой в txt для каждого месяца php

Тема в разделе "PHP для новичков", создана пользователем Viktor1984, 30 янв 2022.

  1. Viktor1984

    Viktor1984 Новичок

    С нами с:
    30 янв 2022
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте! Помогите пожалуйста, нужно готовое решение.
    Есть много версий счетчиков. Максимум чего я добился это запись посещений для каждой страницы профиля пользователей. Запись происходит в txt файл каждого пользователя (создается файл.txt с названием пользователя, которое берется из урл страницы) , выводится как:
    "Просмотров профиля: 4"

    Мой код:
    PHP:
    1. <?php
    2. $url = $_SERVER['HTTP_REFERER'];
    3. $url = basename("$url").PHP_EOL;
    4. $real_page = trim($url).".txt";
    5. $message="";
    6. $ip = getenv("REMOTE_ADDR")."::".getenv("HTTP_X_FORWARDED_FOR");
    7. $datum=date("m.Y", time()-3*3600);
    8. $fp = fopen("$real_page", "rb");
    9. flock($fp,1);
    10. $contents=fread ($fp, filesize ($real_page));
    11. fclose ($fp);
    12. $content= explode("\n",$contents);
    13. $counts= explode("|",$content[0]);
    14. $counts[3]=chop($counts[3]);
    15. if ($counts[3]=="") {$counts[3]="1";}
    16. if (!in_array ($ip, $content)) { $content[] = $ip; $counts[1]++; }
    17. $counts[2]++;
    18. $counts[3]++;
    19. if ($counts[0]!=$datum) {
    20. $message="\ntotal hits:    ".$counts[3]."\ntoday hits:    ".$counts[2]."\ntoday uniques: ".$counts[1];
    21. $r11=$counts[1];
    22. $r21=$counts[2];
    23. $counts[0]=$datum; $counts[1]=1; $counts[2]=1;
    24. }
    25. echo '<span class="ucount">Просмотров: <span>'.$counts[2].'</span></span>';
    26. $content[0]=$counts[0]."|".$counts[1]."|".$counts[2]."|".$counts[3];
    27. $fd = fopen("$real_page", "a");
    28. $locked = flock($fd,2);
    29. if ($locked) {
    30. $fp = fopen("$real_page", "wb");
    31. if ($message=="") { fwrite($fp, implode("\n",$content)); }
    32. else  { fwrite($fp,$content[0]);  }
    33. fclose($fp);
    34. }
    35. fclose($fd);
    36. ?>
    Должен быть принцип работы такой. В текстовый файл записывается типа:
    01. 2022 | 4 - дата месяца и кол-во просмотров.
    Следующий месяц если не совпадает записывается с новой строки и просмотры за новый месяц:
    01. 2022 | 4
    02. 2022 | 26
    03. 2022 | 17
    Ну и собственно нужно вывести последние 6 месяцев с просмотрами (нужно для графика).
    Помогите реализовать, заранее благодарю.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    Используй базу данных для таких вещей, иначе один поток запроса на сайт может перекрыть/стереть/перезаписать весь файл другого запроса. Говорю по опыту, 10 лет назад таким же страдал.

    Ставь лайк.
    Подписывайся в никуда.
    Будь актуальным!
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Готового решения в том виде что описали мне будет, потому что так не делается, как уже сказали пишити всё в бд, а оттуда уж любые данные м любыми рпзбивкамт, периодами и прочими прелестями
     
  4. Viktor1984

    Viktor1984 Новичок

    С нами с:
    30 янв 2022
    Сообщения:
    2
    Симпатии:
    0
    Спасибо за ответы, дело в том что я раньше не имел дело с php и sql, просто срочно возникла такая задача. Сайт на ucoz, через фтп заливаются файлы, как создавать базы данных я не знаю, попробовал в файле php создать базу, выдает ошибку. Нужно готовое решение, если для ucoz это не возможно, можно тему закрыть.
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Готовое решение - значит кто-то должен быть в курсе установленных на этом, без сомнения, достойном сервисе, ограничений. Тогда логичней было бы обратиться на его форум. Наверняка он там есть.
    Если же, всё-таки, решитесь заняться решением самостоятельно, то разбейте задачу на составляющие, и обращайтесь сюда по конкретным вопросам вызвавшим затруднение.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    На дворе уже 2222 год PHP 8.2

    Код (Text):
    1. Какую версию PHP использует uCoz ?
    2.  
    3. На сентябрь 02.09.2021 актуальна PHP Version 5.2.12.
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Вы в курсе что это за сервис?
    Сколько там сайтов?
    Техподдержка изумится количеству обращений.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Через 200 лет :)

    Жесть. Люди буквально понимают фразу «работает – не трожь». Или это шутка?

    @Viktor1984, в файл можете только логи FILE_APPEND'ом писать с послед. обработкой результатов. Для реал-тайма нужна БД, как выше написали. Сейчас это делается при помощи AJAX, например я часто использую pageviews.js со своим php-обработчиком. Вы тоже можете развернуть серверную часть на норм. хостинге, а на юкозе только собирать и выводить результаты (прямо на клиенте).
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    Я в курсе что это за помойка. То какая она "актуальная" везде и в техподдержке, в обратном смысле.
    Удивлен в одном, что еще люди это дно используют.
    Что за вопросики у тебя без смысла возникают ? Ты сам пишешь на версии динозавра и недавно узнал что денвер - это калл. o_O

    Вопросы не о чем.
     
  10. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Меня на их форуме забанили.
    Лет с десять назад.
    На больную мозрль наступил. Вот как тебе сейчас.
    Тоже поди, в программирование умеешь.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    Бухать заканчивай.