Чтение файла. @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 38 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
da-khosh Муж.
новый человек
0
Сообщения: 68
Зарегистрирован: 23.09.01
Откуда: Москва
Заголовок сообщения: Чтение файла.
Сообщение Добавлено: 17 Сентябрь 2005, 12:17:54 
Люди, может кто знает, как при помощи PHP прочесть файл и всё его содержимое поместить в одну переменную. Для дальнейших самых разных операций с этой переменной.

File(); не хочется юзать. Ибо после него надо массивы склеивать, а хочется чего-то простого.
Acid~Jazz Муж.
соучастник
1
Сообщения: 740
Зарегистрирован: 12.04.03
Откуда: Зеленоград
Сообщение Добавлено: 17 Сентябрь 2005, 13:21:14 
file_get_contents();

стыдно должно быть, неужели трудно в документацию посмотреть сначала?

_________________
начинающий менеджер . http://acidjazz.photosight.ru/
da-khosh Муж.
новый человек
0
Сообщения: 68
Зарегистрирован: 23.09.01
Откуда: Москва
Сообщение Добавлено: 17 Сентябрь 2005, 13:38:24 
Стыдно :cry:
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 17 Сентябрь 2005, 15:12:26 
обычный fopen() в ранних версиях

_________________
критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 17 Сентябрь 2005, 21:00:27 
Inviz, это в какой версии fopen читал в переменую? :amazed:

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 17 Сентябрь 2005, 21:20:05 
дык затем fread

_________________
критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 18 Сентябрь 2005, 13:42:46 
Inviz, а в новых версиях куда fread читает? ;)

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 18 Сентябрь 2005, 14:23:43 
$content=implode('',file(filename));

_________________
можно на ТЫ.
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 18 Сентябрь 2005, 17:40:44 
Long,
человек, дорогой, хотите придраться к словам? Раньше (до 4.3) не было file_get_contents. Вот я и говорю, что раньше пользовались связкой fopen + fread всегда. и не надо мне смайликов wink

_________________
критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 18 Сентябрь 2005, 18:23:34 
bE(o0L - не предлагай вариантов, в которых не шаришь.

Рассмотрим: $content=implode('',file(filename));
Алгоритм:
1. Прочитать файл в одну строку (file)
2. Пробежать файл и разрезать его в массив по "\n" новым линиям (файл)
3. Пробежать массив и собрать его в одну строчку (implode)

Не кажется, что пара пунктов тут немного лишние? =)) Хех. Только file_get_contents();

_________________
cre - At - OR
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 18 Сентябрь 2005, 20:34:35 
VolkaR,
это не лучший вариант, это вариант который возможен.

_________________
критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 18 Сентябрь 2005, 21:57:44 
Inviz, это вариант который _не_возможен_. Иначе я могу предложить ещё бесконечное число вариантов с бесконечный разнообразием ненужных пунктов для получени контента файла :) Согласен? implode('', file()) - эта конструкция вообще не должна нигда встречаться. Так как она порочна =)

_________________
cre - At - OR
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 19 Сентябрь 2005, 00:16:32 
VolkaR, не умничай "гений". Это как вариант. пользоваться им или нет - дело автора.

_________________
можно на ТЫ.


Последний раз редактировалось bE(o0L 19 Сентябрь 2005, 00:21:22, всего редактировалось 1 раз.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 19 Сентябрь 2005, 00:19:49 
к тому же человек не указал версию пхп

_________________
можно на ТЫ.
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 19 Сентябрь 2005, 01:02:43 
bE(o0L - умничать - моя хлеб, так что извини, буду умничать дальше, пока платят :)
От версии пхп не зависит использование корявых вариантов. Я тоже могу предложить варант
$fcontent = str_replace('myNL', '', implode('myNL', file('/path/to/file')));
и потом долго всем втирать, что серверу без разницы что там написал кривой программер - всё проглотит :))
Программа должна не только работать. Программа ещё не должна содержать лишних инструкций :)
Или ты со мной не согласен? =)

_________________
cre - At - OR
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 19 Сентябрь 2005, 01:12:22 
А если таки где то откопали старую версию, то про fopen(),fread() уже говорилось. =)

_________________
cre - At - OR
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 19 Сентябрь 2005, 03:46:27 
VolkaR, не надо распыляться про fopen и fread, и пытаться придумать чтолибо сверху implode('',file()). Ибо в первом случае разницы в производительности незначительные крохи, а кода на байты больше. Ведь программа не должна содержать лишних инструкций. ;)

Преимущества file_get_contents() в удобстве и приросте производительности. Но посути это тотже file(). Конечно же я использую именно его (get contents) но это не должно мешать знать об альтернативах. =)

_________________
можно на ТЫ.
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 19 Сентябрь 2005, 04:46:04 
>> Преимущества file_get_contents() в удобстве и приросте производительности. Но посути это тотже file()

Это не тот же file(); скорее наоборот :) Подумай сам, file() - лишь собирательная функция, потому что нельзя протоколу сказать "Получить тект до ближайшего \n" - а значит file() получает данные в чистом виде и потом режет. Так? А нахрена тогда сначала резать, а потом склеивать? file() сам использует fopen(),fclose() - это базовые функции. А значит и лишние инструкции будут только при implode() =))

Единственное - если версия <4.3.0 тут я согласен, что на таком древнем языке можно пренебречь временем выполнения - всёравно хостинг говно и народу там мало :)) Ведь 4.3.0 был зарелизен ещё в 2002м году :) Наводит на мысли.

P.S: Я зануда, правда? =))

_________________
cre - At - OR
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 19 Сентябрь 2005, 08:20:53 
Inviz, я хочу чтобы ты если давал совет, то чтобы он был полный и не предполагал разночтений. иначе - лучше помолчи, дабы у новичков не возникало не верного представления.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 19 Сентябрь 2005, 08:34:07 
fread-то чем не устраивает, я не понимаю?

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 19 Сентябрь 2005, 09:02:15 
VolkaR,
Цитата:
если версия <4.3.0 тут я согласен, что на таком древнем языке можно пренебречь временем выполнения - всёравно хостинг говно и народу там мало


"Не всегда" (С) У Зенона 4.3.1. И ничё. ;)
Бaзиль, а люди просто "хотят поговорить об этом". :laugh: :gent:
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 19 Сентябрь 2005, 09:44:41 
Long,
Товарищ, прошу вас, не затыкайте меня и не указывайте мне, что и когда говорить. Все равно бесполезно.

Тем паче, в моем понимании, fread само собой разумеется.

_________________
критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 19 Сентябрь 2005, 12:43:15 
Inviz, ну раз бесполезно говорить, значит будем действовать хирургическим путем, тем более, что 5 медалей уже заработал.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 19 Сентябрь 2005, 13:48:30 
VolkaR, старик - не лишнии инструкции, а лишняя. развеж это грех?

Бaзиль, устраивает конечно! но здоров же когда не один путь ведёт к победе, а все ;)

_________________
можно на ТЫ.
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 19 Сентябрь 2005, 17:59:53 
@TSV - 4.3.1 :) А я про <4.3.0 :))

bE(o0L - Если ее можно избежать, то грех :) Хотя, если б у меня была версия 4.2.0, я б сам написал implode('', file()) если б делал низкобюджетный проект или какое нить исправление в чужом скрипте :)) Никто не идеален =) Но в высших версиях это явно недопустимо =)

_________________
cre - At - OR
Ainur Муж.
соучастник
16
Сообщения: 731
Зарегистрирован: 15.09.04
Откуда: Italia
Сообщение Добавлено: 19 Сентябрь 2005, 23:25:23 
Так как использовал до этого
$shablon = join('', file($shablon));

Сделал тест, заменил на
$shablon = file_get_contents($shablon);

Скрипт читает файл с сервера в переменную, дальше парсит его и заменяет {чтонить} на нужный результат работы различных функций.

Я симулировал 100 обращений к серверу и вот что у меня вышло :)
Результаты
file()
0.01236 сек.

file_get_contents()
0.01166 сек.

file_get_contents - работает быстрей, но не на много всего на 0,0007 сек.
Тем не менее, для меня достаточно чтоб начать его использовать постоянно.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 19 Сентябрь 2005, 23:36:27 
Ainur, размер тестового файла увеличте до 100кб хотябы. Результаты в студию :dandy:

_________________
можно на ТЫ.
Ainur Муж.
соучастник
16
Сообщения: 731
Зарегистрирован: 15.09.04
Откуда: Italia
Сообщение Добавлено: 20 Сентябрь 2005, 00:11:40 
Млин… удалил усе… нужно заново делать :(
Ainur Муж.
соучастник
16
Сообщения: 731
Зарегистрирован: 15.09.04
Откуда: Italia
Сообщение Добавлено: 20 Сентябрь 2005, 00:38:18 
Парсемый файл: 413KB
Сервер - мой комп intel p4 2,8GHz 1MB L2 cache 533MHz FSB
512 RAM
Windows XP home

$shablon = join('', file($shablon)) : 0.119552

$shablon = file_get_contents($shablon); : 0.077443

Что-то я тормознул про размеры сразу :)
Быстрей, почти в 2 раза (0.42109)…
(sp)
соучастник
0
Сообщения: 559
Зарегистрирован: 22.01.05
Сообщение Добавлено: 20 Сентябрь 2005, 09:33:01 
Ainur, для получения более или менее точных данных неплохо бы повторить тест раз хотя бы тысячу, на разных машинах (а ещё лучше -- платформах).

_________________
baby`s got an atom bomb
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 20 Сентябрь 2005, 09:44:41 
(sp), не обязательно. Можно ещё просто исходный код соответствующих функций посмотреть. ;)
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 21 Сентябрь 2005, 23:05:28 
Ещё есть такой вариант как кэширование в самом php. Лучше сделать несколько тестов, но каждый раз вручную переименовывая (или немного меняя) файл что бы избежать кэша :)
Такие мысли...

_________________
cre - At - OR
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 21 Сентябрь 2005, 23:11:37 
Дети мои, вы пугаете меня до приступов метеоризма.

Правильный алгоритм:

1. Сделать пару сотен тестовыъ файлов.
2. Сделать ОДИН скрипт, в котором в цикле открывать файлы вначале одним, а затем другим способом.
3. Померить скорость.
4. Осознать, что полученные результаты абсолютно бесполезны в реальной жизни.
5. Пойти пить водку.

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 21 Сентябрь 2005, 23:39:43 
Хе =) Пункт 4 мне особенно понравился =)

_________________
cre - At - OR
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 22 Сентябрь 2005, 10:47:26 
мне 5ый...

_________________
:: metal kick ass ::
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 38 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100