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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение количество переданного контента 
:(
    Опции темы
RomanV
Дата 20.11.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

 Есть wap-сайт.
 В нем есть контент - мелодии.
 Когда пользователь скачивает мелодию, нужно точно определить, сколько байтов он загрузил.
 Как Вы решали такую задачу? Может, есть готовые решения?

Это нужно для того, чтобы конкретно  знать, сколько было загружено пользователем контента в байтах, так как мы имеем дело с мобильным телефоном, который может просто недокачать файл.

Это сообщение отредактировал(а) RomanV - 20.11.2009, 17:48
PM MAIL   Вверх
Pitlord
Дата 20.11.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В теории как-то так (ошибка будет в пределах ±1024 или другого значения, выставленного в коде):
Код

<?php

register_shutdown_function('shutdown');

function shutdown()
{
    global $read;

    chdir( SRC_DIR );

    # Количество считанных байт в "test.txt"
    file_put_contents('test.txt', $read);
}

$file = 'filename.mp3';

define('SRC_DIR', getcwd());

if (file_exists($file))
{
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    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));

    $fh = fopen($file, 'rb');

    for( $read = 0; ! feof($fh); $read += strlen($s) )
    {
        echo ($s = fread($fh, 1024));
        flush();
        usleep(100); # Только для теста
    }

    fclose($fh);
}

?>

Я тут специально поставил usleep() для проверки, потому что у меня при файле весом ~ 2 Mb без usleep'а не обнаруживался статус ABORTED: http://docs.php.net/manual/en/features.con...on-handling.php Видимо тут уже проблема не в PHP.
P.S. Может быть возможно реализовать через readfile(), но я не имею возможности проверить.

Но для использования на практике адекватных решений на PHP я не знаю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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