Показать сообщение отдельно
Старый 24.08.2004, 16:56     # 1
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
str_replace and huge strings problem(+)

пытаюсь сделать что-то вроде:

Код:
$sourceString = str_replace('placeholder', $hugeString, $sourceString);
в качестве $hugeString выступает строчка размером в несколько мегабайт

важные детали:

этот код находится в методе некоторого класса. этот метод самый "прожорливый", если верить профайлеру.

там сначала строчка собирается из массива в цикле, а уже затем происходит replace.

так вот на рабочем компе все ок. на хостинге скрипт захлебывается.

скрипт, который использует даный класс, работает по следующией схеме:

1. сначала идет запрос к бд.

2. затем на основе выборки идут еще несколько запросов(больших, несколько тыс. записей).

если выборка не пуста, то создается экземпляр класса.

далее при обработке(fetching). в поле класса(типа array) добавляется новый элемент, т.е. массив постоянно растет.

затем после окончания обработки всех записей вызывается тот самый "прожорливый" метод, который делает единую строку из массива и вставляет ее в другую строку(см. пример выше).

3. затем результат должен записываться в файл.

если заменить все это на обычную конкатенацию(т.е. сборку строки дедовских методом прямо в цикле обработки записей), то все работает нормально, а главное везде.


4. класс находится в отдельном файле от скрипта.

replace - нельзя использовать для больших строк? или я концептуально ошибся?
__________________
убрано по просьбе администратора

Последний раз редактировалось Sheryld; 24.08.2004 в 17:12.
Sheryld вне форума