Реклама на сайте Advertise with us

Отдавать файлы PHP скриптом

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 19/03/08 в 04:52       Ответить с цитатойцитата 

Подскажите - как на виртуале настроить чтобы отдавать файлы пользователям PHP скриптом? На html странице прямые ссылки на avi/wmv/mpeg файлы - пользователь кликает, а файл ему отдает на Апач а PHP скрипт. Файлы нужно отдавать в ОДИН поток, желательно с докачкой, скорость регулировать НЕ нужно.

Аутентификация используется стандартная через .htaccess Доступа к httpd и прочим конфугурационным файлам Апача нет.

Последний раз редактировалось: dlk44 (20/03/08 в 01:15), всего редактировалось 1 раз

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 19/03/08 в 07:24       Ответить с цитатойцитата 

Самый простой вариант (без ограничения скорости):
Код:
header("Content-type: video/mpeg");
header("Cache-control: public");
readfile("movie1.mpg");


readfile тут хорош тем, что сразу выводит файл в браузер и не забивает память.

Ограничивать по скорости можно например так:
Код:
$handle = fopen("movie1.mpg",'r')
while(!feof($handle))
{
   echo fgets($handle, 4096);
   sleep(1);
}
fclose($handle);

это может быть более ресурсоёмко и нужно увеличить или снять вовсе set_time_limit(). Кол-во потоков можно ограничивать, например, через flock().

А зачем нужно отдавать именно через пыху, антилич?

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 19/03/08 в 12:32       Ответить с цитатойцитата 

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

Цитата:
Самый простой вариант (без ограничения скорости)

а так же без поддержки докачки и автоматического mime-типа icon_smile.gif


Цитата:
readfile тут хорош тем, что сразу выводит файл в браузер и не забивает память.

тогда уж лучше юзать passthru - и не грузить пых вообще icon_smile.gif

вообще не лучшая задача для виртула, много могут не разрешить (если виртуал херовенький)[/list]

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 20/03/08 в 00:54       Ответить с цитатойцитата 

Heavy писал:

тогда уж лучше юзать passthru - и не грузить пых вообще icon_smile.gif

вообще не лучшая задача для виртула, много могут не разрешить (если виртуал херовенький)[/list]


Вобщем скорость регулировать НЕ нужно.

Но хотелось бы отдавать файлы только в один поток. Зачем? Статистика на хосте направильно считает траф при скачивании многопотоковыми качалками. Поэтому для скачивания больших файлов пришлось перейти на FTP что для юзеров сложно.

По поводу passthru можно немного подробнее или дай URL где почитать.

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 20/03/08 в 01:01       Ответить с цитатойцитата 

ADSenex писал:

А зачем нужно отдавать именно через пыху, антилич?


Есть 2 причины:

1. Основная - неправильный учет трафа при использовании многопотоковых качалок. Поэтому хочется отдавать через PHP в один поток. Скорость ограничивать НЕ нужно.

2. похоже хостер траф прокачанный через PHP не считает. Эта библиотека в PHP вроде CURL называется. Я ставил один скрипт на PHP и им закачивал на хост по http/ftp по 50Gb в сутки - а в статистике 0.

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 20/03/08 в 01:07       Ответить с цитатойцитата 

Heavy писал:

вообще не лучшая задача для виртула, много могут не разрешить (если виртуал херовенький)


А что именно должно быть разрешено?

PS Файлы большие - от 200Mb до 1500Mb.

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 



С нами с 11.01.07
Сообщения: 3601
Рейтинг: 2682


Передовик Master-X (16.01.2013) Передовик Master-X (01.02.2013) Передовик Master-X (16.02.2014)
Ссылка на сообщениеДобавлено: 20/03/08 в 01:18       Ответить с цитатойцитата 

ставим nginx для тех кто болеет за наших или lighttpd кто за пиндосов - там есть ограничение и по скорости отдачи и по потокам.

0
 



С нами с 11.01.07
Сообщения: 3601
Рейтинг: 2682


Передовик Master-X (16.01.2013) Передовик Master-X (01.02.2013) Передовик Master-X (16.02.2014)
Ссылка на сообщениеДобавлено: 20/03/08 в 01:20       Ответить с цитатойцитата 

упс не прочел про виртуал, совет считать недействительным :)

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 20/03/08 в 01:54       Ответить с цитатойцитата 

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

по passthru вот -
http://php.net/manual/en/function.passthru.php
т.е. просто вывод файла через шел в браузер можно сделать.

докачку можно так - может не работать, т.к. оригинал работал с базой... ну и валидаций добавить на файл нужно - что бы не хакали icon_smile.gif

Код:

error_reporting(0);
set_time_limit(0);

        $file='some_dir'.intval($_REQUEST['filename']);
        if (!is_file($file)) { die('404 File not found!'); }

        $size = filesize($file);
        $filename = basename($file);
        $ctype='application/octet-stream'; // либо определять реальный тип mime

        header('Cache-Control: public', true);
        header('Content-Type: '.$ctype, true);

        if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
            $iefilename = preg_replace('/\./', '%2e', $filename,
                                substr_count($filename, '.') - 1);
            header("Content-Disposition: attachment; filename=\"$iefilename\"",true);
        } else {
            header("Content-Disposition: attachment; filename=\"$filename\"",true);
        }
        header("Accept-Ranges: bytes");

        if(isset($_SERVER['HTTP_RANGE'])) {
            list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
            str_replace($range, "-", $range);
            $size2=$size-1;
            $new_length=$size2-$range;
            header("HTTP/1.1 206 Partial Content");
            header("Content-Length: $new_length");
            header("Content-Range: bytes $range-$size2/$size");
        } else {
            $size2=$size-1;
            header("Content-Range: bytes 0-$size2/$size");
            header("Content-Length: ".$size);
            $range = 0;
        }

        $fp=fopen("$file","r");
        fseek($fp,$range);
        while (!feof($fp)) {
            print(fread($fp,32*1024));
            flush();
            ob_flush();
            sleep(0); // хз на сколько это пыху поможет
        }
        fclose($fp);

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 21/03/08 в 05:50       Ответить с цитатойцитата 

[quote="Heavy"]для таких больших файлов - обязательно докачку нужно делать, но возможность докачки - сразу открывает возможность многопоточной скачки

по passthru вот -
http://php.net/manual/en/function.passthru.php
т.е. просто вывод файла через шел в браузер можно сделать.[quote]

Ладно - можно и без докачки ибо многопотоковость мне не подходит - могут неправильно учеть траф.

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

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 21/03/08 в 11:41       Ответить с цитатойцитата 

да конечно. пусть качают чем хотят. только для правильного имени скачиваемого файла и что бы броузер предложил скачать файл, а не открыть как страницу - всетаки добавляйте в заголовок ответа:
Content-Disposition: attachment; filename=...

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 21/03/08 в 14:36       Ответить с цитатойцитата 

а можно съехать с сервага и не мучать больше жопу icon_smile.gif

Ограничение на скорость сделать легко, а вот на 1 поток сложно, тем более на виртуале.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 22/03/08 в 04:29       Ответить с цитатойцитата 



Да мне скорость ограничивать не нужно.

А если отдавать файлы через PHP способом котрый не поддерживает докачку - юзеры ведь не смогут качать многопотоково?

PS Ну а с серваги я пока съезжать не буду.

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 
+ +
www.b52hosting.com Хостинг

С нами с 10.01.08
Сообщения: 4931
Рейтинг: 147

Ссылка на сообщениеДобавлено: 22/03/08 в 04:32       Ответить с цитатойцитата 

Heavy писал:
да конечно. пусть качают чем хотят. только для правильного имени скачиваемого файла и что бы броузер предложил скачать файл, а не открыть как страницу - всетаки добавляйте в заголовок ответа:
Content-Disposition: attachment; filename=...


Я в PHP чесно говоря не очень понимаю. Нужно создать отдельный .php скрипт и через .htaccess назначить его обработчиком http запросов? Или нужно вставить код прямо в html страницу где ссылки на файлы? Мы говорим конечно про отдельную запароленную папку откуда юзеры и будут качать файлы.

Хостинг 100Gb трафа за 5$ в месяц для порно сайтов WMZ Hosting Adult Сидж CJ

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »