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 :: Количество букс в строке. [2]
в начало скрипта. Если нельзя менять время исполнения - не использовать PHP
Вот если $mb_substr_count() использовать, то вкладывается в 5 секунд исполнения.Значит все же целесообразно его использовать?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 24 Марта, 2014 - 15:18:48
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Нет, значит, что цикл бесконечный. В моём случае отработало всё верно. mb_substr_count никак не поможет на случай, если данные нельзя загрузить в память.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 24 Марта, 2014 - 15:21:29
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
Нет, значит, что цикл бесконечный. В моём случае отработало всё верно. mb_substr_count никак не поможет на случай, если данные нельзя загрузить в память.
Почему у меня тогда не вкладывается в 30 секунд?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 24 Марта, 2014 - 15:25:18
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston пишет:
Почему у меня тогда не вкладывается в 30 секунд?
EuGen пишет:
значит, что цикл бесконечный
- ищите, что не верно сделано.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 24 Марта, 2014 - 15:31:25
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
jonston пишет:
Почему у меня тогда не вкладывается в 30 секунд?
EuGen пишет:
значит, что цикл бесконечный
- ищите, что не верно сделано.
Добавил время обработки.Сработало но примерно через минуту.Вес файла меньше 6 мб.Расширение файла .txt.Локальный сервер.В скрипте поменял только $chars = []; и путь к файлу.
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 24 Марта, 2014 - 15:32:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
6Mb = 6*10242 чтений 1 символа из файла и записи в массив. Это может быть медленно, но это - единственный способ обработки файлов произвольного размера.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 24 Марта, 2014 - 15:35:53
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
6Mb = 6*1024<sup>2</sup> чтений 1 символа из файла и записи в массив. Это может быть медленно, но это - единственный способ обработки файлов произвольного размера.
Понятно.Смысл в том что бы не выгружать все в память а считывать на лету.Спасибо.
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 24 Марта, 2014 - 15:40:45
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Процесс можно ускорить, если знать, что в файле есть переносы строк - и строки не превышают допустимых размеров. Тогда - читать поблочно (fgets) и применять один из методов подсчёта, что дан выше для полностью загруженных в память данных.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 24 Марта, 2014 - 15:44:22
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
Процесс можно ускорить, если знать, что в файле есть переносы строк - и строки не превышают допустимых размеров. Тогда - читать поблочно (fgets) и применять один из методов подсчёта, что дан выше для полностью загруженных в память данных.
переносы строк есть.Допустим есть лимит памяти 1мб.Что нужно изменить что бы считывать с учетом этого лимита?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 24 Марта, 2014 - 16:01:54
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston пишет:
переносы строк есть
jonston пишет:
Допустим есть лимит памяти 1мб.
Нужно быть уверенными в том, что строка не превысит этот самый 1Mb (на самом деле, чуть меньше, так как нужно ещё и сам массив хранить). В этом случае, можно поступить так:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.