|
|
|
| Ребята помогите пожалуйста. Нужно узнать был ли файл скачен до конца с сервера.
Например скачал ли IP весь размер файла music.mp3? Как узнать (? | |
|
|
|
|
|
|
|
для: AlexDIXI
(10.04.2009 в 15:01)
| | только если вы будете отдавать файл через скрипт.... | |
|
|
|
|
|
|
|
для: nikita2206
(10.04.2009 в 15:19)
| | ОК Я ГОТОВО ЕГО ОТДАВАТЬ ЧЕРЕЗ СКРИПТ .. Как выглядит скрипт? | |
|
|
|
|
|
|
|
для: AlexDIXI
(10.04.2009 в 15:43)
| | Нет, это вам тоже не поможет, сервер-то может и выдаст данные в сеть, а дошли они до пользователя или нет - вы вряд ли узнаете. Протокол HTTP так устроен, что не позволяет вам достоверно узнать, что твориться на стороне клиента. | |
|
|
|
|
|
|
|
для: cheops
(12.04.2009 в 16:37)
| | В принципе, да, но можно ведь и через заднее крыльцо...
Например, если файл грузится HTML страницей, то по событию onLoad можно добавить на страницу, например, какой-то рисунок через JS. И, если рисунок запрошен у сервера - значит файл скачан.
Несовсем понятно как эту музыку потом выковыривать из страницы, но это уже другой вопрос. Автор же не написал что именно он хочет. Может ему так и нужно... | |
|
|
|
|
|
|
|
для: AlexDIXI
(10.04.2009 в 15:01)
| | АП | |
|
|
|
|
|
|
|
для: AlexDIXI
(11.04.2009 в 15:11)
| | По raw логам сервера. | |
|
|
|
|
|
|
|
для: Саня
(12.04.2009 в 17:42)
| | Опять же, так Вы сможете определить, что файл отдан, а не скачан.
К примеру если запрос шел через прокси, то последний вполне мог закачать файл к себе до внезапного обрыва клиента. | |
|
|
|
|
|
|
|
для: Trianon
(12.04.2009 в 17:47)
| | Trianon, в PHP есть такая функция, вы должны знать, давно на php.net читал, эта функция возвращает true если пользователь остановил загрузку страницы, а скрипт продолжает работать...
тоесть это полезно при выполнении какогото цикла...
проблема в том что я не помню название этой функции...
впринципе можно было бы сделать цикл, указав в его условии чтото вроде !feof($handler), а в теле:
<?
if(эта_функция()){ ...; break; } echo fgets($handler,1024);
|
| |
|
|
|
|
|
|
|
|
для: AlexDIXI
(11.04.2009 в 15:11)
| | тогда както так:
<?php
set_time_limit(0);
header('Content-type: audio/mp3');
header('Content-Disposition: attachment; filename='.$_GET['file']);
$handler = fopen('files/'.$_GET['file'], 'r');
if($handler){
while(!feof($handler)){
if(!connection_aborted()){
echo fgets($handler, 10240);
}else{
break;
}
}
if(feof($handler)){
/* делаем запрос в бд, добавляя кол-во скачиваний файла $_GET['file'] */
}
fclose($handler);
}
?>
|
P.S. еще в .htaccess желательно прописать редирект, чтото вроде такого:
RedirectMatch files/(.+)\.mp3$ http://%{HTTP_HOST}/download.php?file=$1
|
тогда можно будет выдавать ссылки вида: http://site.ru/files/song_name.mp3
это полезно для тех кто любит пользовать функцию даунлоадеров, когда они "пасут" буфер обмена и при появлении в нем подобной ссылки предлагают закачать файл
еще забыл сказать, желательно папку files закрыть при помощи того же .htaccess ( deny from all )... | |
|
|
|
|
|
|
|
для: nikita2206
(12.04.2009 в 18:41)
| |
RewriteRule ^download/([a-zA-Z0-9_\-\.]+)$ files/download.php?file=$1 [QSA,L]
|
| |
|
|
|
|
|
|
|
для: serjinio
(12.04.2009 в 23:00)
| | мне кажется так нельзя...
я имею ввиду пользовать реврайт...
предположим доунлоадер получил первые 10Кб информации, он отправляет запрос на следующюю порцию информации, а получает первую...(если я неправ, поправьте...) | |
|
|
|
|
|
|
|
для: nikita2206
(13.04.2009 в 16:04)
| | Ребята. Читал статью, о том что есть пхп скрипт который способен уточнить с какого места была прервана передача файла. И из ходя из этих данных, скрипт по запросу докачки, оттдоет файл с того места откуда он был прерван. Вот моя логика скрипта. Начинаем отдавать файл, при этом следим за окончанием переданых данных, и если они достигли конца то true если нет, то false. Ведь это не сложно только надо знать больше чем я :) | |
|
|
|
|
|
|
|
для: AlexDIXI
(14.04.2009 в 11:56)
| | >...скрипт по запросу докачки, оттдоет файл с того места откуда он был прерван.
клиент, формируя запрос докачки, сам указывает, с какого места ему нужен файл.
скрипт, исполняя запрос докачки, всего лишь отдает указанное в запросе. | |
|
|
|
|
|
|
|
для: Trianon
(14.04.2009 в 12:03)
| | Как с эмитировать разрыв соединения на локальной машине, чтобы отстроить скрипт докачки.. | |
|
|
|
|
|
|
|
для: serjinio
(14.04.2009 в 19:53)
| | Скриптом (через fsockopen) .
В конце вопросов нормальные люди ставят вопросительный знак. | |
|
|
|
|
|
|
|
для: Trianon
(14.04.2009 в 20:04)
| | была тема, "Лена" её заводила... Я аж удивился что девушка такое знает... Там всё дело обстоит в хедерах...
Серверу посылают запрос, указывая в хедере с какого места начинать отдавать (заметте, неуказывается до куда отдавать, т.к. это бессмысленно, ведь клиент в любой момент может остановить получение данных за ненадобностью...)... на самом деле всё немного сложнее чем кажется...
П.С. то что я нажал ссылку "Ответ" под постом Трианона - незначит что я ему пишу)) просто нажал в самом низу) | |
|
|
|