Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 4788 В разделе
Programming
от January 18th, 2013,
В подшивках: PHP
Не так давно я возродил старый проект Distr СMS и медленно его улучшаю. Он очень полезен всем держателям файловых серверов с дистрибутивами. Чтобы узнать какого размера дистрибутив пользователю нужно начать его качать. Так вот чтобы пользователь не качал почем зря и держатель сервера особо не заморачивался о размерах файлов в БД я использовал функцию определения размера файла по возвращаемому сервером заголовку. Кстати, скачать Distr CMS можно тут.
А теперь к делу. Убедитесь, что у вас установлен модуль PHP curl. Если нет, то легко устанавливается командой sudo apt-get install php5-curl. А потом сделайте рестарт вебсервера, если PHP подключен модулем к нему или fcgi демона (например, php-fpm).
А вот и сам кусочек кода:
function get_size($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
$data = curl_exec($ch);
$fsize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
return $fsize;
}
Ничего сложного и все объяснимо документацией curl. Функция работает достаточно быстро, чтобы ее использовать в ваших продакшн скриптах. У меня она запускается при добавлении урла в базу данных, дописывая размер файла в ту же таблицу урлов.
Fortune cookie: Christ: A man who was born at least 5,000 years ahead of his time.
Спасибо за CMS’ку. Молодец, что сделал такой проект. Я ещё ни где не видел в сети такого проекта.