Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка фрагмента файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
bratkovsky
Отправлено: 05 Марта, 2013 - 19:51:02
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




К примеру у нас есть файл весом 100 mb!
как нам сделать так что бы загрузить и вывести только фрагмент файла...

вот обычный способ загрузки и вывод файла:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $file = file('file.type');
  5. $count = count($file);
  6.  
  7. for($i=0; $i<$count; $i++)
  8. {
  9. echo"$file[$i]</br>";
  10. }
  11.  
  12. ?>
  13.  
  14.  


Этот способ загружает сначала весь файл еще до его вывода. Но а как сделать чтобы читался и выводился только фрагмент файла например в 100 символов?

функция file(); это понятно загрузит весь массив...
функция count(); это тож понятно он загрузит все массивы пока неподщитает от нуля и до конца

как же тогда это организовать?????
 
 Top
NoPaper
Отправлено: 05 Марта, 2013 - 19:53:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $handle = fopen('Файл', "r");
  3. $contents = fread($handle, 'Размер считываемых данных в байтах');
  4. fclose($handle);
  5.  
 
 Top
bratkovsky
Отправлено: 05 Марта, 2013 - 19:54:02
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




даже если бы этот файл весил к примеру 1 Gb то функция всерано загрузила бы весь массив а это уже нагрузка на сервер...
(Добавление)
ща проверим Улыбка
(Добавление)
Всеравно фукцией fopen(); загружается сначала весь файл а пото уже идет подсчет байтов и вывод... и в результате при загрузке 100Gb нагрузка на сервак Огорчение
(Добавление)
вот была бы к примеру вот такая фунция с такими параметрами!

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. file('file.type',0,100);
  5.  
  6. ?>
  7.  
  8.  
 
 Top
esterio
Отправлено: 05 Марта, 2013 - 20:21:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





Спойлер (Отобразить)
 
 Top
bratkovsky
Отправлено: 05 Марта, 2013 - 20:49:36
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




esterio пишет:

Спойлер (Отобразить)


Один хрен функцией fopen(); сначала читается весь файл от 0 byte до хрен знает сколько... а fread(); это уже потом Джедаи
(Добавление)
bratkovsky пишет:
esterio пишет:

Спойлер (Отобразить)


Один хрен функцией fopen(); сначала читается весь файл от 0 byte до хрен знает сколько... а fread(); это уже потом Джедаи


и к чему писать два раза файл?
 
 Top
Stierus Супермодератор
Отправлено: 05 Марта, 2013 - 21:00:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
Один хрен функцией fopen(); сначала читается весь файл от 0 byte до хрен знает сколько


fopen не читает ничего
 
My status
 Top
Мелкий Супермодератор
Отправлено: 05 Марта, 2013 - 21:01:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




bratkovsky пишет:
Всеравно фукцией fopen(); загружается сначала весь файл

С чего вы это взяли?
fopen как раз из низкоуровневых вызовов, не делающая ровным счётом ничего, о чём ту явно не просили. Ничего она самостоятельно не читает.


-----
PostgreSQL DBA
 
 Top
bratkovsky
Отправлено: 05 Марта, 2013 - 21:11:39
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Мелкий пишет:
bratkovsky пишет:
Всеравно фукцией fopen(); загружается сначала весь файл

С чего вы это взяли?
fopen как раз из низкоуровневых вызовов, не делающая ровным счётом ничего, о чём ту явно не просили. Ничего она самостоятельно не читает.

через одну минуту ответ

Service Temporarily Unavailable

The server closed the connection without sending any data.

The server is temporarily unable to service your request due to maintenance downtime or capacity problems.

Due to heavy load on the server, connections may be temporarily blocked from locations that fetch an unusually high number of pages.

We apologize for the inconvenience.
(Добавление)
но если файл на половину меньше этого то все отлично работает! почему так?
(Добавление)
тоисть должна быть какаято фукция изначальной загрузки заданого размера фрагмента файла,что то типа к примеру

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file_fragment('file.type',100); // имя загружаемого файла и (до) столько то загрузить файл в байтах и принудительно при 100 байт перестать загружать єтот файл!
  3.  
 
 Top
Мелкий Супермодератор
Отправлено: 06 Марта, 2013 - 08:38:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Во-первых, смотрите лог веб-сервера, что происходит в действительности.
Во-вторых - я уверен, что чуть дальше после fopen вы сами вычитываете весь файл. Или ещё какую глупость делаете.


-----
PostgreSQL DBA
 
 Top
bratkovsky
Отправлено: 06 Марта, 2013 - 11:44:02
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Мелкий пишет:
Во-первых, смотрите лог веб-сервера, что происходит в действительности.
Во-вторых - я уверен, что чуть дальше после fopen вы сами вычитываете весь файл. Или ещё какую глупость делаете.


Все хокей это я просто тут подтупил, просто файлы попутал - пишу и сохраняю один а использую другой старый Ха-ха всем спасибо все отлично работает!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB