Обновление: я только что узнал, что эта проблема происходит только в Chrome/Edge, но не в Firefox. Может быть, это подсказка для кого -то, более хорошо осведомленного по этой теме ... < /p>
Я действительно наткнулся на эту. Я нахожусь в процессе преобразования очень большого веб -проекта из «линейного» кода PHP в «объектно -ориентированный» код PHP. До этого момента все прошло плавно. Вот ситуация. Каждая запись и форматирует их в хорошем выходе, используя теги и т. Д. С кучей операторов Echo. Что -то вроде этого упрощенного примера: < /p>
$sql = "...querry syntax...";
$result = conn->query($sql);
while ($row = $result->fetch->object) {
echo "".$row->parameter."" // etc.
}
< /code>
Это было довольно сложное форматирование, но работало отлично и мог справиться с тысячами записей без каких -либо сбоев. Мой запрос на тестовый запуск - это вытягивание около 1500 записей, но он работает с более чем 10 000 записей. Форматирование как блок HTML -кода. Я называю это так: < /p>
$record = new Record();
$record->load(); // loads the record from the database
$record->draw(); // outputs the final formatted data
< /code>
Опять же, это работает точно так же, как и ожидалось, нет проблем. Итак, вот где это становится интересным. Объект записи обрабатывает только одну запись. Таким образом, я создал объект RecordList, который по сути представляет собой множество объектов записи (с кучей методов обработки поиска, разных запросов и т. Д.), Иногда в нескольких тысячах записей. У меня есть метод, который возвращает одну запись за раз из объекта записи, поэтому он используется таким: < /p>
$list = new RecordList();
$list->load(); // loads a bunch of records (also 1500 records)
while($record = $list->get_next_record()) {
$record->draw();
}
< /code>
Когда я пытаюсь запустить этот код, он выведет до 389 записей, но на 390 -м вызове браузер бросает ошибку полноэкранного состояния_STACK_OVERFLOW. Случается на Chrome и Edge.
Я пытался вывести память после каждого вызова, и я никогда не более 5 МБ использования, так что это не ошибка из памяти, и у меня нет рекурсивных вызовов в моих методах что я могу найти.
Кроме того, важно отметить, что это не что -то в самих данных ... Я тестирую его с живой базой данных, чтобы содержимое записей изменялось каждый раз, когда я запускаю свой код. /p>
Я пытался включить flush (); После каждого рисования в моем объекте записи, но, похоже, это не помогает. в метод, называемый «draw ()». Я планирую обновить его для создания всего формата в переменной, называемой выводом $, а затем отобразить его с одним оператором Echo, прежде чем выходить из метода. Не уверен, что это может быть, по крайней мере, отчасти вызвать проблему, но хотел упомянуть об этом на всякий случай. Это происходит только с моей объектно -ориентированной версией. Шокирующе, это первый раз, когда я столкнулся с проблемой со стеком за 5 лет, работая над этим проектом, поэтому я не совсем уверен, как продолжить. < /P>
Любые мысли или идеи ? Я надеюсь, что я здесь просто кость, и это что -то очевидное для кого -то еще ... lol
Спасибо все!
Подробнее здесь: https://stackoverflow.com/questions/794 ... iented-php
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php
Anonymous » » в форуме Php - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный PHP [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Alert(data.status) завершается с ошибкой, когда status=false, но не когда status=true
Anonymous » » в форуме Jquery - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-