пытаюсь сделать что-то вроде:
Код:
$sourceString = str_replace('placeholder', $hugeString, $sourceString);
в качестве $hugeString выступает строчка размером в несколько мегабайт
важные детали:
этот код находится в методе некоторого класса. этот метод самый "прожорливый", если верить профайлеру.
там сначала строчка собирается из массива в цикле, а уже затем происходит replace.
так вот на рабочем компе все ок. на хостинге скрипт захлебывается.
скрипт, который использует даный класс, работает по следующией схеме:
1. сначала идет запрос к бд.
2. затем на основе выборки идут еще несколько запросов(больших, несколько тыс. записей).
если выборка не пуста, то создается экземпляр класса.
далее при обработке(fetching). в поле класса(типа array) добавляется новый элемент, т.е. массив постоянно растет.
затем после окончания обработки всех записей вызывается тот самый "прожорливый" метод, который делает единую строку из массива и вставляет ее в другую строку(см. пример выше).
3. затем результат должен записываться в файл.
если заменить все это на обычную конкатенацию(т.е. сборку строки дедовских методом прямо в цикле обработки записей), то все работает нормально, а главное везде.
4. класс находится в отдельном файле от скрипта.
replace - нельзя использовать для больших строк? или я концептуально ошибся?