Отправить заявку

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 = '/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;   
?>
Другие публикации