powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP]Отдача файла
16 сообщений из 16, страница 1 из 1
[PHP]Отдача файла
    #37732752
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Задумался как правильно отдать файл с сайта пользователю.
Мой скрипт роутинга на сайте получает все пути которые вводятся пользователем и обрабатывает. Т.е. даже если файл лежит в папке, то отдаётся он не просто вэб сервером, а через выставление хеадеров и readfile($url);
Вопрос, насколько это правильно/ущербно , стоит переписать либо нет.

думал заменить readfile на

Код: php
1.
2.
3.
4.
5.
6.
$handle = fopen ($file, "r"); 
while (!feof ($handle)) {     
    $buffer = fgets($handle, 4096);     
    echo $buffer; 
} 
fclose ($handle);



отдавай заранее заголовки.

Правда опять же не ясно, будут ли тормоза, или всё должно работать на ура.

ткните, в чем не прав и каков тру вэй)
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732769
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы так не делал, достаточна большая нагрузка таким образом файлы выдавать.
.htaccess попробуй поправить:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

сперва мы проверяем, существует ли запрашиваемый файл, используя директиву RewriteCond, и, если нет, то перенаправляем запрос на index.php
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732770
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur,
пришли .htaccess посмотрим как можно поправить
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732771
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А без всего этого файл вебсервером отдается как то не так? Опишите исходную задачу.
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732825
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вы хотите управлять доступом к файлам через php, то лучше использовать fgets нежели readfile. fgets работает быстрее для больших файлов, а readfile может выдавать ошибку переполнения буфера. если есть возможность, то лучше создавать уникальные ссылки на файл через shell командой ln http://rus-linux.net/MyLDP/consol/hdrguide/rusman/ln.htm имхо быстрее и избавит от многих потенциальных проблем
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732836
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadrotлучше создавать уникальные ссылки на файл через shell командой ln http://rus-linux.net/MyLDP/consol/hdrguide/rusman/ln.htm
Чем встроенная пхпшная функция symlink() не устраивает?
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732847
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zadrotkalamfur,
пришли .htaccess посмотрим как можно поправить

Код: plaintext
1.
2.
3.
4.
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$  http://%1/$1  [R=301,L]
RewriteRule (.*)? index.php?page=$1 [L,QSA]

vkleА без всего этого файл вебсервером отдается как то не так? Опишите исходную задачу.

Задача в полном контроле над любыми запросами к сайту. Мне кажется что это самый простой вариант. Т.е. в index.php я проверяю регулярками URL и либо переадресовываю, либо логирую запросы и отказываю в доступе либо в поток что-то отдаю.
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732879
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЧем встроенная пхпшная функция symlink() не устраивает? мда, тупанул, symlink() логичней.
kalamfurOptions +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule (.*)? index.php?page=$1 [L,QSA]
это у тебя и картинки, css, js и прочие инклуды через php генерятся?:) не самый простой вариант
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732885
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadrotkalamfurOptions +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule (.*)? index.php?page=$1 [L,QSA]
это у тебя и картинки, css, js и прочие инклуды через php генерятся?:) не самый простой вариант
попробуй так

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule (.*)? index.php?page=$1 [L,QSA]

тут проверяется существует ли файл, если да то выдается если нет то посылается в индекс
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732897
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfur,
еще после RewriteEngine On можно добавить:

RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]

а то я так понимаю если у тебя человек название сайта без www набирает то попадает вникуда
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732898
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zadrotа то я так понимаю если у тебя человек название сайта без www набирает то попадает вникуда
Почему вникуда? редиректит на сайт без www
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732905
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurЗадача в полном контроле над любыми запросами к сайту.ИМХО это немного лишнее. Не вижу смысла мониторить запросы к стилям, яваскриптам, картинкам оформления и прочей мелочевке. Если, конечно, нет какого-то тайного смысла ))))
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732908
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто не стал проверять всё в .htaccess так как до этого использовал не апач, а lighttpd.
Или стоит как-то проверять, и если не PHP, то отдавать как статику?

разница по времени отдачи будет между fget и простой отдачей? или там еще и нагрузка на интерпритатор?
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37732912
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurzadrotа то я так понимаю если у тебя человек название сайта без www набирает то попадает вникуда
Почему вникуда? редиректит на сайт без www
не часто сталкиваюсь с htaccess, но в твоем htaccess я этого не вижу.
kalamfurПросто не стал проверять всё в .htaccess так как до этого использовал не апач, а lighttpd.
Или стоит как-то проверять, и если не PHP, то отдавать как статику?

разница по времени отдачи будет между fget и простой отдачей? или там еще и нагрузка на интерпритатор?
по дефолту как-то так пишу:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?route=$0 [L,QSA]

разница огромная будет
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37733021
kalamfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, значит буду пользовать htaccess)
видимо, контролировать все запросы это паранойя))
...
Рейтинг: 0 / 0
[PHP]Отдача файла
    #37733022
zadrot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalamfurВсем спасибо, значит буду пользовать htaccess)
видимо, контролировать все запросы это паранойя))нет, настраивай apache log там любой запрос можно контролировать, без потери производительноси
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP]Отдача файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]