![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
v1kee |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 14.9.2010 Репутация: нет Всего: нет |
Здравствуйте уважаемые форумчане!
Такая тема: клиент (например Download Master) обращается на сервер к скрипту download.php, скрипт начинает отдавать клиенту файл на сервере через:
таким образом он print'ит весь файл. Проблема в том что если клиент отменяет закачку или она прервалась по техническим причинам у клиента, скрипт все равно продолжает работу, чем наверно впустую тратит процессорное время сервера! А если файл около 500 МБ скрипт будет работать пока не наступит конец файла... Вопрос: как определить что клиент отменил передачу файла и завершить работу скрипта? Может в цикле while (!feof($fs)) вставить проверку на какую либо переменную глобальную, а когда в Download Master'e клиент жмет паузу наверно отправляется заголовок какой нибудь что мол "закачка остановлена", перехват этого заголовка и изменение глобальной переменной приведет к выходу из цикла? Помогите пожалуйста решить проблему, посоветуйте что нибудь? |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: нет Всего: 91 |
ну во-первых отдача файла скриптом, это идея вообще отстой.
Если оно, всё таки надо, то:
без fopen и прочего. если нужна поддержка докачки, то или отдавать файл не скриптом, или анализировать заголовок X-Range, и тогда придется отдавать файл опять через fopen |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: нет Всего: 91 |
skyboy,
это я собирался предложить дальше.. всё таки x-sendfile это уже не "отдача скриптом" |
|||
|
||||
v1kee |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 14.9.2010 Репутация: нет Всего: нет |
Нет, мужики, это все конечно хорошо.... но необходимо через php.......
|
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: нет Всего: 91 |
я написал в первом сообщение, как через PHP
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
v1kee |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 14.9.2010 Репутация: нет Всего: нет |
Понимаешь, я просто привожу пример такого рода - что скрипт выдает файл со своего сервера, на самом деле все так:
у меня 2 хостинга, первый недорогой с размером в 200 мегабайт, на втором у меня 4 Тб дискового пространства это FTP. Это все связано таким образом - файл на самом деле хранится на втором хостинге, но я не могу отдавать файл просто так со своего FTP, так как это влечет скачивание файлов без учета трафика, и без учета рейтинга пользователя... Я не хочу чтобы адресс моего FTP фигурировал при передаче пакетов так как это влечет определенные затраты для меня, поэтому я реализовал следующее: 1. Клиент обращается к download.php 2. download.php отсылает через сокет на FTP header с запросом "HEAD /file.rar HTTP/1.1" 3. получив размер файла download.php отправляет заголовок GET 4. download.php качает по 2 килобайта и сразу направляет клиенту. Вот вся цепочка. Теперь, зная что к чему, Вы можете посоветовать что нибудь для решения данной задачи без умного вида выражений вроде: ? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
Если коротко: так не должно быть. Для такого поведения надо совершить определенные действия. PHP: Connection handling сорри, пишу, как могу. в дальнейшем попытаюсь писать проще. дабы не смущать. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
используемый FTP поддерживает докачку?
Добавлено через 36 секунд давай, показывай настоящий скрипт. |
|||
|
||||
v1kee |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 14.9.2010 Репутация: нет Всего: нет |
Щас почитаю по поводу PHP: Connection handling спасибо!
Да FTP поддерживает докачку, при условии что к нему обращаются с логином и паролем администратора. Это сообщение отредактировал(а) v1kee - 31.1.2011, 19:11 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |