php Размер и счетчик скачиваний файла на PHP 

Дата публикации  Дата изменения08.02.13  Комментарии6   Просмотры6021

Размер и счетчик скачиваний файла на PHP. MySQL не используется. Благодаря гибкости и удобству использования является хорошим решением в ряде случаев.

A. Блок счетчика и файла, который предлагается к скачиванию и число скачек которого выводится:

1. Создать директорию (expl_dl), в которую поместить предлагаемый для скачивания файл (expl.zip).

2. Создать в этой же директории пустой файл (expl.txt), в котором будет храниться число скачиваний.

3. Создать в этой же директории файл обработчика числа скачиваний (expl.php):

<?php
$f=fopen("expl.txt","a+");
flock($f,LOCK_EX);
$count=fread($f,100);
@$count++;
ftruncate($f,0);
fwrite($f,$count);
fflush($f);
flock($f,LOCK_UN);
fclose($f);
Header("location:expl.zip");
?>

B. Блок определения размера файла:

До <!DOCTYPE>:

<?php

function filesize_get($file)
{
    // проверяем, существует ли файл
    if(!file_exists($file)) return "Файл  отсутствует.";

   //определяем размер файла
  $filesize = filesize($file);
  
   // Если размер переданного в функцию файла больше 1кб
   if($filesize > 1024)
   {
       $filesize = ($filesize/1024);
       // если размер файла больше одного килобайта
       // пересчитываем в мегабайтах
       if($filesize > 1024)
       {
            $filesize = ($filesize/1024);
           // если размер файла больше одного мегабайта
           // пересчитываем в гигабайтах
           if($filesize > 1024)
           {
               $filesize = ($filesize/1024);
               $filesize = round($filesize, 2);
               return $filesize." GB";   
                
           }
           else
           {
               $filesize = round($filesize, 2);
               return $filesize." MB";   
           }  
            
       }
       else
       {
           $filesize = round($filesize, 2);
           return $filesize." Kb";   
       }
   
   }
   else
   {
       $filesize = round($filesize, 2);
       return $filesize." bytes";   
   }
  
}

?>

C. Блок вывода в браузер:

Между <body></body>:

<a href="expl.php">Скачать файл</a>
<!--выводим ссылку для скачивания--> 
<?php
$file="expl.zip"; // инициализируем переменную определения размера нужным файлом
echo "&nbsp;&nbsp;Размер: <span style=\"color:blue\">".filesize_get($file)."</span> |"; //выводим размер этого файла

$s=file("expl.txt"); // инициализируем переменную файлом, хранящим число скачиваний нужного файла
echo " Скачан: <span style=\"color:red\">$s[0]</span> раз"; //выводим результат
?>

Собственно, синтаксис с выводом $s[0] хромает, хоть и работает: нужно или через включение – {$s[0]}, или через стандарт – echo " Скачан: <span style=\"color:red\">".$s[0]."</span> раз";

Поскольку используется только php, то показания счетчика скачиваний в браузере изменяются при обновлении страницы.

  Размер:  1,94kB | Изменен:  3.02.13 | Загрузок: 173
Бесплатные курсы

Категории

Теги: , , , ,

Оцените материал:

Рейтинг: 10.0/10 (2)


КомментарииКомментарии:

    Спеццц

     

    Попробовал, что то не работает… Мне надо что бы показывало размер файла по ссылке, например – dl.google.com/edgedl/chrome/install/GoogleChromeStandaloneEnterprise.msi (размер – 20мб) а точнее – GoogleChrome (размер – 20мб) И так на разных страницах с разными ссылками.. Не пашет в общем, как его применить в моем случае, что бы работало, подскажите. Спасибо.

    coder.hol.es /* Админ */

     

    Может зависеть от хостинга, движка – если допускается выполнение php5.2 и выше, то должно работать. Попробуйте на локалке (денвере, например) – пример рабочий, поэтому нужно попробовать найти причину, имхо. Тем более, что вам нужен только размер, без счетчика – тогда только функция filesize_get($file), в которую (т.е. присваиваете $file) передаете правильный путь к нужному файлу.

    Спеццц

     

    Движок используемый для применения скрипта – DLE. Я там имел ввиду, что ссылки на скачивание все внешние… как с этим быть? Создаю файл li.php, в нем код: который вы пишите "До <!DOCTYPE>", инклудю его до <!DOCTYPE>… Создаю файл link.php, в нем код: <?php $file="expl.zip"; // инициализируем переменную определения размера нужным файлом echo "&nbsp;&nbsp;Размер: <span style=\"color:blue\">".filesize_get($file)."</span> |"; //выводим размер этого файла ?> Ссылки добавляю через доп. поля. Я не говорил что не работает вообще, просто это я не то делаю, а как правильно не знаю. Помогите применить, не получается. Спасибо.

    coder.hol.es /* Админ */

     

    По размеру внешнего файла, посмотрите: _http://www.internet-technologies.ru/articles/article_839.html#subscribeCansel; с ДЛЕ не работаю, но попробуйте задать вопрос здесь: _http://www.cy-pr.com/forum/f63/

    Андрей

     

    А как сделать чтоб архив rar скачивался? Ато он шифрует его.


Поля, обозначенные как *, обязательны.





Максимальная длина сообщения 900 символов. Осталось   символов

 

Старые →← Новые