Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что не так со счетчиком скачиваний 
:(
    Опции темы
Ripperr
  Дата 4.12.2010, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



Код

<?php
function return_stream($id,$type)
{
    if($id != NULL && $type != NULL){
    //GET FILE PATH
    include_once("include/config_sql.php");
    $store_result=mysql_fetch_array(mysql_query("
    SELECT
        store.storelink AS storelink
    FROM
        store
    WHERE
        store.id = ".intval($id)."
    "));
    //GENERATE LOCAL PATH
    $filename=basename($store_result[storelink]);
    $file ="/home/store1/".$id."/video/".$filename;
    if (file_exists($file)) {
        
        session_start(); 
            if (!isset($_SESSION[$type.intval($id)])==1)
            {
            //IF FILE EXIST ADD DOWNLOD RATIO TO MYSQL
            mysql_query("        
            INSERT
                INTO downloaded_dep
                    (downloaded_dep.id,
                    downloaded_dep.type,
                    downloaded_dep.who,
                    downloaded_dep.date_action,
                    downloaded_dep.belong_to)    
                VALUES 
                    (NULL,
                    \"".$type."\",
                    \"".$_SERVER['REMOTE_ADDR']."\",
                    NOW(),
                    ".intval($id)."
                    )    
            ");
            $_SESSION[$type.intval($id)]=1;
            }
        
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.$filename);
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;

        } else    {    print "FAILED O_o";    }    
    }
    
}

return_stream($_GET[id],$_GET[type]);
?>


пытаюсь сделать счетчик скачиваний но проблема такова, что при запуске скачки помимо того что скорость никакая то еще, при закачке сайт вообще не работает до окончания или остановки закачки ...
(с того же ПК на котором запущена закачка с другого он работает)

Какие мысли ?

PM MAIL ICQ   Вверх
ksnk
Дата 4.12.2010, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



перед отдачей файла поставь session_write_close();  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ripperr
Дата 5.12.2010, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



А как скорость поравнять ибо напрямую 10 МБ/с а через скрипт 1,6-2,2 Мб/с
PM MAIL ICQ   Вверх
umka
Дата 5.12.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 23.1.2004

Репутация: нет
Всего: 0



Скорость будет по-любому меньше, т.к. сервер отдаёт файл не напрямую, а через "переходник" в виде пхп. И на это тратятся дополнительные ресурсы и время.
Плюс ко всему, когда файл отдаётся напрямую, браузер может скачивать его несколькими частями (partial content), из-за этого всё происходит быстрее.
Если реализовать отдачу partial content через скрипт, то сервер может быстро загнуться smile

Лучше всего эту задачу решить так: скрипт увеличивает счётчик и делает редирект на нужный файл, а браузер уже качает файл напрямую.
В директории, где файлы, сделать проверку referer-а, чтобы не давали прямых ссылок.
PM MAIL WWW   Вверх
skyboy
Дата 5.12.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



лучше всего использовать механизм web-сервера X-SendFile или аналог. скрипт считает количество счетчиков, а отдача идет уже не через скрипт, а средствами HTTP-сервера
PM MAIL   Вверх
Ripperr
Дата 5.12.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



Две основные задачи у этого скрипта спрятать реальный линк ... и посчитать кол-во закачек ...

также есть еще один ньюанс есть flowplayer в нем надо посчитать кол-во просмотров
PM MAIL ICQ   Вверх
skyboy
Дата 6.12.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



ты мое сообщение про X-SendFile видел?

Добавлено через 51 секунду
вот, даже ссылку кину: http://voituk.kiev.ua/2008/09/04/sendfile-...pache-tomcat-6/
PM MAIL   Вверх
Ripperr
Дата 11.12.2010, 16:41 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



на апаче оно работает ?

Это сообщение отредактировал(а) Ripperr - 11.12.2010, 16:42
PM MAIL ICQ   Вверх
skyboy
Дата 11.12.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



чтоб перейти по ссылке, достаточно кликнуть по ней.
PM MAIL   Вверх
Ripperr
Дата 12.12.2010, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



Придела к апачю модуль вроде отдает нормально ....

но стриминг с ним не работает так что остается вопрос что делать с flowplayer надо счетчик просмотров
PM MAIL ICQ   Вверх
skyboy
Дата 12.12.2010, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Ripperr @  12.12.2010,  00:14 Найти цитируемый пост)
но стриминг с ним не работает

что значит "не работает"? где конкретика?  smile 
PM MAIL   Вверх
Ripperr
Дата 12.12.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

Репутация: нет
Всего: нет



Конкретика в том что не работает перемотка в FlowPlayer 
PM MAIL ICQ   Вверх
enoff
Дата 12.12.2010, 22:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



мод xsendfile не поддерживает заголовок Range.
в nginx с X-Accel-Redirect этой проблемы нет.
в скрипте нужно будет только учесть заголовок Range, чтобы при перемотке в плеере на сервере не росло количество скачиваний.
PM MAIL ICQ Skype GTalk   Вверх
skyboy
Дата 12.12.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(enoff @  12.12.2010,  21:03 Найти цитируемый пост)
мод xsendfile не поддерживает заголовок Range.

странно. мод не ставил, но оффсайт утверждает:
Цитата(tn123.org/mod_xsendfile)

Benefits

  • Uses apache internals
  • Optimal delivery through sendfile and mmap (if available).
  • Sets correct cache headers such as Etag and If-Modified-Since as if the file was statically served.
  • Processes cache headers such as If-None-Match or If-Modified-Since.
  • Support for ranges.


что у тебя за версия модуля, Ripperr?
PM MAIL   Вверх
enoff
Дата 12.12.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



хм, когда ставил, у меня не работало, я и подумал, что не поддерживает.
в гугле только патч для range год назад, но и тот для lighthttpd.
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.