![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
То что имел ввиду Mal Hack, осуществляется через раширение dio. Простейший пример чтения рандомной строки
Это сообщение отредактировал(а) sTa1kEr - 13.8.2007, 23:13 |
||||
|
|||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Сейчас протестировал в Windows. Что бы не писать слишком сложных скриптов, проверял через Task Manager. Файл чуть больше 20мб.
И аналогичный, но через dio. Через dio, как и ожидалось, все идеально, ни байта лишней памяти, ни одного лишнего обращения к диску. Через fopen, процесс PHP прочел с диска > 80мб данных, а вот памяти сам PHP не съел ни одного лишнего байта, но система съедала где-то еще 4мб, т.е. такое впечатление, что она просто не успевала освобождать память. Если, к примеру, в цикл вставить usleep(100), то же лишняя память не расходовалась. Проверял и на PHP 4 (правда последнем 4.4.7). Прошу прощенья, тут я забыл добавить, что это только мое предположение, как ведет себя fseek() в PHP. Я не утверждаю, что это так на самом деле, но, имхо, это единственный способ установить курсор в нужную позицию в режиме ASCII. Это сообщение отредактировал(а) sTa1kEr - 14.8.2007, 00:55 |
||||
|
|||||
Severyanin |
|
|||
![]() Исследователь ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 31.7.2007 Где: Россия, Омск Репутация: нет Всего: 9 |
Mal Hack:
А какое тогда отличие от file? -------------------- "Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл "Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
file - обертка фопен, которая расширяет его возможности и читает файл в массив. У тебя ПХП как модуль апача или как фаст-цгай настроен? Вопрос принципиальный. Можешь более конкретнее привести цифры с теми параметрами к которым они относятся, чисто ради интереса... Смущают 80 метров как-то... |
|||
|
||||
Diesel Draft |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: 1 Всего: 5 |
sTa1kEr, Откуда знание о реализации?
Вот не помню, увижу напишу.
З чего ты взял? Я не не вижу смысла читать весь файл все по дороге за курсором. Вот тест меня удивил |
||||
|
|||||
sTa1kEr |
|
||||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Я тестировал через CLI и через модуль apache - одинаково.
Могу привести точные цифры использования памяти, добавил в конце скрипта var_dump(win32_ps_stat_proc());
Как узнать в Windows через PHP количество обращений к винту и количество прочитанных данных я не знаю, только разве что через Win32API, но это разве, что когда будет свободное время реализовать. А судя по Task Manager-у 82 003 210 байт прочитано. Я же сказал, что это мое предположение. Хотя ни что не мешает покопаться исходниках и посмотреть как там реализован fseek()
Если, к примеру, прочитать до оффсета 500 байт в текстовом режиме, то длина прочитаного может быть меньше, к примеру, 450 байт, что может стать причиной ошибок. Это сообщение отредактировал(а) sTa1kEr - 14.8.2007, 18:34 |
||||||
|
|||||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
82 метра - слишом странно...
Может он в процессе работы скрипта скидывал и читал из виртуалки системной... Как-ть обязательно протестирую на досуге. |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Как выяснилось ~80мб при любом размере файла, т.е. по 8кб на каждый fseek(). Тут определенно надо разобраться.
В Linux-е тот же скрипт так же не увеличивает использование памяти, но как просмотреть обращения к диску я не знаю. |
|||
|
||||
Diesel Draft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: 1 Всего: 5 |
Парне а вы точно то считаете?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |