Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: примитивный прокси убыстрить

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
densk
Отправлено: 22 Ноября, 2010 - 08:40:55
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2010  
Откуда: Раменское


Помог: 0 раз(а)




работает такой код на сайте - берет файл с удаленного фтп и отдает его посетителю сайта. сделано все так, что сначала загружает файл, потом его передает пользователю, и после у себя удаляет (хостинг по размеру ограничен). Получается если файлы более весомые - уже больше 20 мб, (а там будет до 60 мб.) то пользователь нервно замечает задержку между нажатием на ссылку и началом скачивания.
Просьба - подскажите как можно начать отдачу файла не дожидаясь окончания загрузки его на хостинг?и на файлах около 50 мб он ждет загрузки на хостинг, но немного не дожидаясь сообщает что страница не найдена - думаю по причине что есть лимит на ожидание ответа.
вот код ключевой части скрипта:
PHP:
скопировать код в буфер обмена
  1. $conn_id = ftp_connect($ftp_server);
  2. //********вход с именем пользователя и паролем************************
  3. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  4. //******попытка скачать $server_file и сохранить в $local_file********
  5. if (ftp_get($conn_id, $local, $server,  FTP_BINARY))
  6. //**************если удачно то передаем пользователю******************
  7. {
  8.    if (file_exists($local))
  9.    {
  10.     header('Content-Description: File Transfer');
  11.     header('Content-Type: application/octet-stream');
  12.     header('Content-Disposition: attachment; filename='.basename($local));
  13.     header('Content-Transfer-Encoding: binary');
  14.     header('Expires: 0');
  15.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  16.     header('Pragma: public');
  17.     header('Content-Length: ' . filesize($local));
  18.     ob_clean();
  19.     flush();
  20.     readfile($local);
  21.    unlink($local); // и удаляем файл из директроии сайта
  22.     exit;
  23.    }
  24. }
  25. else
  26. {echo "Не удалось завершить операцию\n";}
  27. //*****************закрытие соединения*********************************
  28. ftp_close($conn_id);
 
 Top
Toxa
Отправлено: 22 Ноября, 2010 - 09:06:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


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


-----
Удобный сервис для хранения файлов
 
 Top
DlTA
Отправлено: 22 Ноября, 2010 - 09:21:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Toxa пишет:
Не понимаю, для чего нужно скачивать файлы на хостинг? Почему нельзя отдавать их сразу с ftp? Поменяйте ссылки на сайте и все.

невсегда есть доступ на фтп, поэтому удобней отдавать в браузер
 
 Top
Viper
Отправлено: 22 Ноября, 2010 - 09:31:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Отдавайте файл кусками.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
densk
Отправлено: 22 Ноября, 2010 - 09:39:04
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2010  
Откуда: Раменское


Помог: 0 раз(а)




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

да, попробую.
(Добавление)
как забирать файл с фтп частями? не могу пока найти решение, подскажите плз
 
 Top
densk
Отправлено: 22 Ноября, 2010 - 12:36:25
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2010  
Откуда: Раменское


Помог: 0 раз(а)




отдавать по частям научился а забирать как? если фаил большой и скачивание уже занимает более 30-60 секунд то сервер обрывает работу скрипта
 
 Top
DlTA
Отправлено: 22 Ноября, 2010 - 14:10:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




странно
сервер обрывает обычно обрывает если там 30-60 секунд вычислений,
а если это время занимает скачка или отдача но нет
у меня сервер так отдавал 15 минут, хотя таймаут 60 секунд))
 
 Top
OrmaJever Модератор
Отправлено: 22 Ноября, 2010 - 14:20:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




densk пишет:
если фаил большой и скачивание уже занимает более 30-60 секунд то сервер обрывает работу скрипта

может set_time_limit() спасёт ситуацию?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
densk
Отправлено: 22 Ноября, 2010 - 17:39:13
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Сент. 2010  
Откуда: Раменское


Помог: 0 раз(а)




секундомером засекал - ровно 30 секунд, попробую
OrmaJever пишет:
может set_time_limit() спасёт ситуацию?
 
 Top
OrmaJever Модератор
Отправлено: 22 Ноября, 2010 - 17:43:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




densk пишет:
секундомером засекал - ровно 30 секунд, попробую

по дефолту в пхп стоит ограничение загрузки скрипта в 30 секунд.

в начале скрипта и ограничения нету


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 22 Ноября, 2010 - 20:27:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




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


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB