Проблема при скачивания больших PDF файлов

tche

Новичок
Проблема при скачивания больших PDF файлов

Всем привет. Столкнулся с проблемой, на первый взгляд очевидной, но работающего решения пока найти не могу.

Имеем сайт элетронных журналов www.turpion.org . Пользователь может посмотреть содержание и, при желании, скачать полный текст нужной статьи в виде PDF. PDF файлы порой довольно большого размера, а пользователи со всего мира, скорость иногда хреновенькая. Человек (тетенька библитекарь из средней азии) нажимает на download, файл начинает грузиться, но окно еще не поменялось, тогда он снова нажимает на download, еще, и т.д. в конце концов он получает файл, но в логах (access_log) куча записей о скаченных файлах.

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

Таким образом, в результате анализа логов, оказывается, что некоторые юзеры скачивают один и тот же файл 2-3-4 раза с интервалом 10-20-30-60 секунд (в зависимости от размера файла). Конечно, на самом деле, они только один раз его получили.

Возможные решения:
1. Запретить повторное нажатие на кнопку download. Это можно, в принципе, сделать как на JavaScript, так и средствами PHP (выставлять переменную сессии при первом нажатии, и если она уже есть, то не выполнять dowload), но вопрос - когда и каким образом этот запрет снять. Ведь PDF это не html файл, и в него не вставишь кусок кода
2. При нажатии download выплевывать сообщение типа Wait please..., которое должно ИЗЧЕЗНУТЬ, когда файл загрузится.
Каким образом?
Если это сообщение выдавать в другом окне, то это окно закрыть автоматически не получается.

Проблема усугубляется тем, что система работает сейчас и должна работать почти под все броузеры, в том числе Netscape 3, под линуксом и т.п. Нельзя сильно опираться на JavaScript, так как он может быть отключен.

Нельзя ли PDF выдавать из HTML файла как картинку, то есть типа <img src=...pdf>, тогда можно пользоваться событиями onLoad и т.п?

Если сходить на сайт www.turpion.org, то там почти в каждом журнале есть Sample Issue для бесплатного просмотра, то есть можно дойти до полного текста и посмотреть, как это выглядит.

Спасибо за внимание :))) Буду крайне признателен за любые советы.

Дима
 

tony2001

TeaM PHPClub
способы обсуждались на форуме.
если поискать - найдешь.
насколько я помню, самый реальный был - временно создавать файл со случайным именем и выдавать это имя конкретному пользователю.
через N времени - удалять его, предполагая, что он его уже скачал.
 

tche

Новичок
спасибо ...

Ну тогда проще создавать переменную сессии. У меня линк download ведет не на временный файл, а на скрипт, который проверяет права доступа, выводит header для PDF, а потом readfile(pdf_file). Это еще и потому удобно, что потом в логах парсеру легко запись про скрипт отыскать, а если будут даунлоадить временные файлы, то тогда придется отыскивать в логах имя этого временного файла, оно каждый раз разное, поэтому придется вести таблицу соответствий и т.п.

Очень хочется вывесить сообщение Wait please...

Я еще пороюсь в архивах

Автор оригинала: tony2001
насколько я помню, самый реальный был - временно создавать файл со случайным именем и выдавать это имя конкретному пользователю.
через N времени - удалять его, предполагая, что он его уже скачал.
 
Сверху