Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2011, 08:21   #1
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию Обработка пришедшего запроса

Эх, даже не знаю как тему обозвать. В общем вот:
PHP код:
if($root_folder!="./"){
        
chdir($root_folder);
    }else {
        if(
$_REQUEST["q"]=="index.php"$_REQUEST["q"] = "init.php";
    }
    if(
file_exists($_REQUEST["q"])){
        if(
strpos($_REQUEST["q"],".php")>0){
            include_once(
$_REQUEST["q"]);
            echo 
microtime(true)-$timer;
        }else{
            
$file_name=$_REQUEST["q"];
            
$ext pathinfo($file_namePATHINFO_EXTENSION);
            if(
rtrim($ext)=="") exit();
            
header("Content-Length: ".filesize($file_name));
            if(
$_REQUEST["download"]=="Y")
            {
                
header("Content-Disposition: attachment; filename=".$file_name);
                
$mimeType "application/force-download"
            }else {
                
$mimeType "";
                include_once(
"mimeTypes.php");
                
$mimes array_merge($image_mime$text_mime$application_mime$audio_mime$video_mime);
                foreach (
$mimes as $mime => $value){
                    if(
mb_strpos($value,$ext)!==false){
                        
$mimeType $mime;
                        break;
                    }
                }
                if(
$mimeType==""){
                    
header("Content-Disposition: attachment; filename=".$file_name);
                    
$mimeType "application/force-download";
                }
            }
            
header("Content-Type: $mimeType; name=\"".$file_name."\"");
            
readfile($file_name);
        }
    } 
Имеется куча доменных имен и один index.php который расталкивает все запросы по нужным папкам. Таким образом чтобы не писать например так domen1.ru/sites/site1/img.png пишем так domen1.ru/img.png при желании добавляем ?download=Y и качаем файл.
Но тут меня начало гложить, что нет fseek, то есть например перемотка аудио/видео данных да и вообще скачивать файлы с сервера в много потоков невозможно.
Хотелось бы реализовать fseek($pos); fread($f, $lenght); а вот как вытащить эти $pos и $lenght, например делаю вот такую штуку в C++ InternetSetFilePointer(hURL,pos,NUL L,FILE_BEGIN,0);(это я делаю, если связь порвалась(BytesRead==0) и я ее устанавливаю заново и продолжаю качать файл с нужной позиции своим загрузчиком=)) ) Очевидно что закачка начнется заново, но в силу своей "умности" эта функция как я понял дожидается определенного момента(когда когда позиция вновь загр. файла дойдет до требуемой) и передает управление дальше.
______
А обычные download managers вообще не качают, ни flashget ни Microsoft Download Manager...

Последний раз редактировалось Kostia; 02.09.2011 в 08:31.
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
информация из запроса new_here Microsoft Office Access 4 14.11.2010 21:07
Обработка запроса сервером delphi ogg Работа с сетью в Delphi 0 08.12.2009 20:41
Создание запроса gfadssa11 Microsoft Office Access 0 06.11.2009 23:00
Обработка SQL-запроса iid2007 Microsoft Office Access 2 10.07.2008 12:41
Формирование запроса BlackOmen JavaScript, Ajax 6 15.06.2008 12:37