php apache и временные файлы - PullRequest
       32

php apache и временные файлы

0 голосов
/ 25 августа 2010

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

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

Вопрос в том, что эти временные файлы нужно очистить в какой-то момент, и моей первой мыслью было, что это система на основе Linux, сохраните их в / tmp / и позвольте системе позаботиться об очистке.

Is it possible to store these files in /tmp and have apache serve them 
to the user?  

Если apache не может получить доступ к / tmp, поскольку он находится вне корневого веб-каталога, возможно, я мог бы создать символическую ссылку на / tmp / filename в корневом веб-каталоге?(Это потребует очистки символических ссылок, хотя в какой-то момент.)

Предложения / комментарии приветствуются по поводу лучшего способа управления этими временными файлами?

I am aware that I could write a script and have it executed as a cron job on 
regular intervals but was wondering if there was a way similar to presented 
above to do this and not have to handle deleting the files? 

1 Ответ

2 голосов
/ 25 августа 2010

Есть большая вероятность, что Apache сможет прочитать каталог tmp, но такой подход пахнет плохо.Мой подход заключается в том, чтобы PHP прочитал файл и отправил его пользователю.По сути, вы отправляете соответствующие заголовки HTTP, чтобы указать, какой тип контента вы отправляете и какое имя использовать для файла, а затем просто выплевываете файл с помощью echo (например).

Itпохоже, что есть хорошее обсуждение этого в другом вопросе:

HTTP-заголовки для загрузки файлов

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

[дополнительный материал]

Извините, что не обратились напрямую к вашему вопросу.Если вы используете PHP для обслуживания файлов, они не обязательно должны находиться в веб-корне Apache, именно там, где Apache / PHP имеет доступ для чтения файловой системы.Таким образом, вы действительно можете просто сохранить их в / tmp и позволить ОС очистить их для вас.Возможно, вы захотите настроить частоту этих очисток, чтобы поддерживать громкость на желаемом уровне.

Если вы хотите обеспечить надежный отказ в доступе после определенного периода времени или определенного числазагрузок, вы можете сохранить информацию об отслеживании в вашей базе данных (например, флаг пользователя, указывающий, что он загрузил файл), а затем проверить его с помощью сценария загрузки и, возможно, запретить загрузку.Это эффективно отделяет безопасность доступа от частоты очистки, две вещи, которые вы, возможно, захотите настроить независимо.

Надеюсь, это более полезно ...

...