![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Dima50 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 20.10.2007 Репутация: 1 Всего: 2 |
Доброго дня.
Задача заключается в следующем есть большое количество файлов уже с забитыми в них алгоритамами, выдающими ответы в виде echo, наверное это можно назвать в стандартный поток вывода. Надо вывод каждого такого файла перенести в строку, дабы внутри скрипта была возможность ими манипулировать. Подобная возможность есть у шаблонов SMARTY (метод fetch) не визуализирвоать шаблон, а перенаправлять его вывод в переменную. Но у меня не шаблоны, а обыкновенные скрипты. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
пишешь в начале каждого файла $html = '';
затем каждый echo заменяешь на $html .= /средствами быстрой замены/ всё. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
метод, предложенный bars80080 будет намного быстрее единственной альтернативы - буфферизации вывода(функции ob_*: ob_start, ob_end_flush etc)
|
|||
|
||||
| Dima50 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 20.10.2007 Репутация: 1 Всего: 2 |
Это самый очевидный способ. Но думаю должны быть более изящные способы решения данной проблемы. Не изменяя файлы содержащие алгоритм. 1) Перенаправить вывод файла программно при помощи установки каких то параметров (каких незнаю) 2) Сервер сам у себя запрашивает файл, и ответ записывает как строку. (как реализовать тоже теряюсь) я еще года 3 назад слышал что кто-то написал FTP сервер на PHP. Значит есть возможности. Добавлено через 6 минут и 37 секунд
Пока писал прошлый ответ этого не увидел. А у сервер сам у себя файл запросить не может? (это уже в качестве образования, и полного развития темы) |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Не соглашусь насчет "намного быстрее"
У меня на машине примерный результат 0.486759185791 0.394455909729, тоесть разница, по сравнению с "эффективным методом" менее, чем 0.01 секунды на 100000 повторений. Такие цифры для меня , как правило, ознаяают экономию на спичках... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
воображение сразу рисует здорую стереосистему со 100-ваттными колонками 7.1, полноцветным жк-дисплеем и многичисленными хромовыми ручками переключателей. одна беда - лоток под CD слишком большой. почему? дык, для граммпластинок а ежели не бессмысленный прогон одного и того же текста, а реальная сборка страницы объёмом хотя бы до 200 кБ с подключением многочисленных классов, операций, выборками из БД и т.д.? т.е. реальная ситуация |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Полноценный аналог смарти в несколько строк с этой штукой.
Реализация в неООП-стиле:
|
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
bars80080, В реальности я такое пока еще не использовал ;-) Тоже думал, что ob - это тормоза. Но вот приспичило переписать шаблонизатор и компилировать некоторые конструкции показалось удобнее с применением echo. Пришлось иследовать...
Ситуация примерно как с двойными и одинарными кавычками. Все догадываются, что одинарные быстрее, но только опыт покажет - насколько Кстати, если увеличить объем строк-параметров, то разница становится все более заметна. вот разница выполнения 100000 циклов
для такой конструкции
То-есть первое измерение для длины 14, последнее для 14*30*10=4200 байт... То есть чем больше объем выдаваемый ob, тем менее эффективно оно формируется. Хотя, если учесть, что эффект накапливается для статыщ повторений - на него можно и наплевать... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
ksnk, спасибо за проделанный опыт. на самом деле, я действительно полагался "на общественное время"
|
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
|
|||
|
||||
| Dima50 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 20.10.2007 Репутация: 1 Всего: 2 |
Спасибо всем, особенно skyboy и ksnk. Сильно помогли, тема закрыта
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |