№ 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: Today's spam: Live large with a great big manhood!
Спасибо за CMS’ку. Молодец, что сделал такой проект. Я ещё ни где не видел в сети такого проекта.