PHP скачать скрипт с несколькими подключениями - PullRequest
1 голос
/ 07 ноября 2011

У меня есть php-код для загрузки файла для конкретного пользователя Я храню содержимое файла в базе данных (используя тип BLOB-объектов).

<?php
//do stuffs to validate user
//do stuffs get the content from database;
//$r=mysql_fetch_object("$query");
header("Content-Type: $r->type");
header("Content-Disposition: attachment; filename=\"$r->name\"");
echo $r->content;
?>

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

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

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

Как только соединение начинает регулироваться (например, на сайте загрузки файлов, таком как Rapidshare, «бесплатные» пользователи получают ограниченную пропускную способность), тогда использование параллельных соединений МОЖЕТ увеличить скорость. например один поток ограничен до 50 к / с, поэтому открытие 2-х потоков даст эффективные 100 к / с.

Но тогда вам придется поддерживать дистанционную загрузку. Ваш скрипт в том виде, в каком он есть, отсылает весь файл от начала до конца. Таким образом, пользователь будет загружать весь файл дважды.

0 голосов
/ 07 ноября 2011

Вероятно, вы не так уж много можете сделать, чтобы ускорить этот конкретный процесс.

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

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

...