067 607 57 84
МЕНЮ

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://site.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;
?>