PHP – определение размера файла на удаленном сервере

Встала острая необходимость получить размер тысячи огромных файлов, которые лежали на удаленном сервере. Нужно было получить общее количество МБ всех файлов, для того, что бы понять, хватит ли места на сервере если выкачать все эти файлы. На php это реализовать достаточно просто и быстро. Получить размер удаленного файла можно из HTTP-заголовков.

<?
 function getRemoteFileSize($url){
   $parse = parse_url($url);
   $host = $parse['host'];
   $fp = @fsockopen ($host, 80, $errno, $errstr, 20);
   if(!$fp){
     $ret = 0;
   }else{
     $host = $parse['host'];
     fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
     fputs($fp, "HOST: ".$host."\r\n");
     fputs($fp, "Connection: close\r\n\r\n");
     $headers = "";
     while (!feof($fp)){
       $headers .= fgets ($fp, 128);
     }
     fclose ($fp);
     $headers = strtolower($headers);
     $array = preg_split("|[\s,]+|",$headers);
     $key = array_search('content-length:',$array);
     $ret = $array[$key+1];
   }
   if($array[1]==200) return $ret;
   else return -1*$array[1];
 } 

 $url = 'http://artkiev.com/blog/wp-content/uploads/2012/12/sreda.zip';
 $size = getRemoteFileSize($url);
 if($size==0) echo "Не могу соединиться";
 elseif($size<0) echo "Ошибка. Код ответа HTTP: ".(-1*$size);
 else echo "Размер удалённого файла (bytes): ".$size;
?>


Поделиться с друзьями:

Другие публикации:



Написать комментарий через:

 
       
  • ВКонтакте
  •        
  • Локальный блог
  •  
 
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статьи пользователей на ArtKiev Design Studio