загрузка файлов с помощью PHP, отслеживание, авторизация, кэширование, mime-типы - PullRequest
1 голос
/ 31 января 2012

У меня есть CMS со сценарием, который выполняется для каждого файла, к которому осуществляется доступ в папке /files.

Я настроил это с помощью RewriteRule в /files/.htaccess

RewriteRule ^(.*) ../file_tracker?path=/$1

Сценарий file_tracker.php должен сделать две вещи:

  • Отслеживание : вести журнал количества обращений к файлу.и когда к нему последний раз обращались.
  • Авторизация : для файлов экземпляра в /files/secure требуется сеанс входа в систему.

Когда у вас есть такой скрипт, вам нужно сделать гораздо больше, например:

  • Вернуть код состояния 404, если файл не существует - требуется file_exists check
  • Вывести правильный MIME-заголовки типов - это PHP кошмар, если вы разрешаете обслуживать любой тип файла
  • Выводить разумные заголовки кэширования - пользовательские E-теги?

Я хочу, чтобы этот скриптБыть настолько быстрым, насколько это возможно, потому что на некоторых страницах много файлов, 100 мс - это уже слишком много.Сейчас я думаю о простом журнале для отслеживания, с запланированной задачей, которая будет выполнять массовые обновления.Авторизация будет более ресурсоемкой, но я не могу этого избежать.Последняя часть, которую я хотел бы сделать в Apache, так как он, кажется, очень хорош в этом: правильные заголовки, E-теги для кеширования и все такое причудливое.

Я почти уверен, что не могубыть единственным с этой проблемой.Любые предложения?


Upd: У меня нет кода, чтобы показать, потому что нет соответствующего кода.Вещи, которые я мог бы реализовать, настолько тривиальны, что даже не стоит публиковать.Это предварительная тема.'use header()' - это не то, что я ищу.


X-Sendfile было бы идеальным решением, но по умолчанию оно не включено на большинстве хостов, поэтому я могу 'не надейся на это.

1 Ответ

0 голосов
/ 31 января 2012

Полагаю, это сводится к доступу к логированию в PHP. Авторизация - это совсем другой вопрос. Я закрою этот вопрос и сделаю новый.

...