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
Форумы портала PHP.SU :: Версия для печати :: Загрузка и отдача картинки через PHP (аля Proxy)
Форумы портала PHP.SU » » Графика в PHP » Загрузка и отдача картинки через PHP (аля Proxy)

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

1. wmk - 11 Ноября, 2012 - 14:52:30 - перейти к сообщению
Ребят! подскажите такой момент, можно ли отдавать картинку средствами php постепенно, то есть если картинка большая, в браузере она грузится постепенно по мере получения оной, а если отдавать через php то она сначала подгрузится сервером и потом разом отдастся браузеру. Суть в том можно ли сделать постепенную отдачу кусок получил - отдал, получил - отдал.

Смысл всего этого извращения в том чтоб по ссылке
http://site[dot]ru/picture[dot]jpg
открывалось
http://other-site[dot]ru/pic[dot]jpg
и грузилось без тормозов

Буду рад если подскажете как сделать правильно Закатив глазки
2. Zuldek - 11 Ноября, 2012 - 15:16:44 - перейти к сообщению
1. Отдавать можно что хотите и как хотите. Хоть по байтам.
Цитата:
в браузере она грузится постепенно по мере получения оной

Этим вы управлять не можете.
Цитата:
а если отдавать через php то она сначала подгрузится сервером и потом разом отдастся браузеру

Что вы подразумеваете под "сначала подгрузится сервером"?
Если ваша картинка лежит на другом сервере, то браузере запрашивает её у другого сервера и ваш в этом никак не участвует.
2. В этом нет совершенно никакого смысла.
3. avtor.fox - 11 Ноября, 2012 - 15:18:32 - перейти к сообщению
js onload - событие
4. halsoft - 11 Ноября, 2012 - 15:33:20 - перейти к сообщению
Автор скорее всего хочет просто тянуть картинки с другого сайта и отдавать их как свои.
5. Zuldek - 11 Ноября, 2012 - 15:43:54 - перейти к сообщению
Формулировать вопрос хотя бы нужно правильно чтобы не били в шаманский бубен угадывая что требуется.
6. wmk - 11 Ноября, 2012 - 17:32:20 - перейти к сообщению
halsoft пишет:
просто тянуть картинки с другого сайта и отдавать их как свои.

ну примерно так, картинки лежат на разных серверах (сейчас их 8), а если ссылатся на них всех, то уходит и PR и ТИЦ поэтому нужно нечто вроде прокси. Получается что когда заходишь на страницу то картинки грузятся очень долго, а хочется чтоб отдавались быстрее. Вопрос в том как отдавать запрашиваемые картинки по мере загрузки их сервером
7. NoPaper - 11 Ноября, 2012 - 18:19:45 - перейти к сообщению
image.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-type: image/jpg');
  3. echo file_get_contents($_GET['image']);
  4. ?>


обращаться к скрипту так:
CODE (html):
скопировать код в буфер обмена
  1. <ims src='image.php?image=http://картинка-на-другом-сайте'/>


p.s. про безопасность скрипта не было ни слова =)
8. wmk - 11 Ноября, 2012 - 18:34:32 - перейти к сообщению
NoPaper пишет:
p.s. про безопасность скрипта не было ни слова =)

тут вопрос не про безопасность, а про работоспособность, он пока картинку полностью не загрузит, ничего и не отдаст Огорчение
9. avtor.fox - 11 Ноября, 2012 - 19:27:43 - перейти к сообщению
wmk объясните нормальным языком. На других серверах Ваши изображения или сторонние? И имеете ли доступ к серверам?

И ещё раз, доходчиво. Картинку загружает браузер.

И моё мимолётное, идиотское представление -

PHP:
скопировать код в буфер обмена
  1. $img = array('dedsert.jpg', 'chrysanthemum.jpg');
  2. function getImgTmp($img){
  3.         $imgPath = 'img/';
  4.         $infoFile = pathinfo($imgPath.$img);
  5.         $unic = str_replace(str_split('.:,-'), '', uniqid('img', time()));
  6.         if(file_exists($imgPath.$img)){
  7.                 if(copy($imgPath.$img, $unic.'.'.$infoFile['extension'])){
  8.                         return $unic.'.'.$infoFile['extension'];
  9.                 }
  10.                 else{
  11.                         return 'img_error_403.jpg';
  12.                 }
  13.         }
  14.         else{
  15.                 return 'img_error_404.jpg';
  16.         }
  17. }
  18. print_r(array_map('getImgTmp', $img));


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

 

Powered by ExBB FM 1.0 RC1