С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453

Узнать размер файла более 4 ГБ

12.10.2010, 15:48. Показов 3046. Ответов 7

Студворк — интернет-сервис помощи студентам
Мне нужно работать с разными файлами. Проблема в том, что функция filesize() от 32-битного PHP умеет определять размер только файлов, размером до 2 ГБ... или с костылями можно увеличить до 4 ГБ. Думал использовать stat(), но там тоже самое. Существует ли какой-нибудь культурный способ определить размер больших файлов? Сейчас я сделал через exec()
PHP
1
2
3
4
5
6
exec('dir "'.str_replace('/','\\',$fname).'"',$r);
$r = implode("\r\n",$r);
$r = str_replace("\xFF",' ',$r);
preg_match('/[\d]{2,2}\.[\d]{2,2}\.[\d]{2,4}[\s]+[\d]{2,2}\:[\d]{2,2}[\s]+([\d\s]+)/im',$r,$m);
if (!isset($m[1])) return false;
$size = str_replace(' ','',$m[1]);
...но это извращение и нужно будет перенастраивать для других ОС.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2010, 15:48
Ответы с готовыми решениями:

GD как узнать размер файла, в байтах, на выходе?
Всем привет! Простенький пример: Делаем привьюшку. $src = 'file.jpg'; $src = imagecreatefromjpeg($src); $new =...

Как узнать размер файла?
Можете подсказать, какая функция показывает размер файла?

Как увеличить размер загружаемого файла более чем 100М ?
До 5 гигов?!

7
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
12.10.2010, 16:35
пару вариантов в голове крутятся (учитывая, что нужна кроссплатформенность):
1) FTP: создаем ftp соединение и делаем запрос на размер файла
2) HTTP: через curl можно - шлем запрос на получение размера и указываем, что нам кроме хедеров в ответ ниче не нужно (а там мы читаем Content-length)
1
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
12.10.2010, 17:17  [ТС]
Цитата Сообщение от GalaX Посмотреть сообщение
учитывая, что нужна кроссплатформенность
В принципе, кроссплатформенность не нужна... это будет работать только на моём компе. Просто интересует, есть ли в PHP нормальные способы для этого. А то пока космические корабли что-то там бороздят, PHP не умеет работать с большими файлами. Каменный век получается.
Методы с FTP и HTTP интересные, но тогда нужно этот файл копировать в расшаренную папку. Да и тут тоже придётся парсить результат. Именно от этого хочется уйти.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2010, 18:20
Юзать 64-битный PHP ?

Добавлено через 28 секунд
А - так это винда
1
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
12.10.2010, 19:44  [ТС]
odip, 64-битную WinXP часто ругают... Win7 мне не нравится, что бы ставить только для одной цели. Пожалуй, я пока через exec() буду пользоваться
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.10.2010, 19:48
На php.net среди комментов к функции filesize есть кривой вариант с открытием файла на чтение и перемещением указателя (fseek, ftell). Теоритически, можно поизвращаться с относительным перемещением указателя по файлу, но на практике, наверное, это бред. Мы же вообще не знаем, чем отличается файл 1Б от файла 4ГБ+1Б.
1
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
12.10.2010, 20:22
Цитата Сообщение от Vovan-VE Посмотреть сообщение
с открытием файла на чтение и перемещением указателя (fseek, ftell)
пробовал - не работает (

Humanoid, там же среди комментов где-то было через COM - работает (сюда постить не стал сначала - думал, что кроссплатформенность нужна)
1
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
12.10.2010, 23:40  [ТС]
А действительно... я не посмотрел комментарии. Например, способ
PHP
1
exec('FOR %A IN ("'.$fn.'") DO @ECHO %~zA');
гораздо лучше, чем то, что я использую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2010, 23:40
Помогаю со студенческими работами здесь

Узнать размер файла если он более 8 гб
GetFileSizeEx работает только с файлами <=8 гб. Как правильно узнать размер файла более 8 гб, и как узнать что он более 8 гб при...

Получить размер большого файла(6Гб и более)
Здравствуйте. Как я могу получить размер большого файла,более 6Гб? Использую следующий код,но получаю отрицательное значение. int...

Узнать размер файла
Всем привет, в флеше я почти полный ноль, и не хотел даже в него лезть, Но в нем есть такая замечательная возможность - узнать размер...

Узнать размер файла
Дорогие форумчане! Есть у меня есть файл xxxxx.clk(все данные в нем строчные), он весит n-ое количество мегабайт. Нужно задать массив...

Узнать размер файла
Мне нужно прочитать обычный текстовый файл. Я думаю это сделать с помощью одной из функций семейства get(). Для этого (и не только) мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru