Эта проблема происходит только в Chrome/Edge, но не в Firefox, и я действительно наткнулся на этот. Over From "Linear" PHP -кода в «объектно -ориентированный» PHP -код. До этого момента все перешло плавно, но вот ситуация. Традиционный цикл через объекты SQL, чтобы получить данные из каждой записи, и форматирует их в хорошем выходе, используя теги и т. Д. С кучей операторов Echo. Что -то вроде этого упрощенного примера: < /p>
$sql = "...query syntax...";
$result = conn->query($sql);
while ($row = $result->fetch->object) {
echo "".$row->parameter."" // etc.
}
< /code>
Это было довольно сложное форматирование, но работало отлично и мог справиться с тысячами записей без каких -либо сбоев. Мой запрос на тестовый запуск - это вытягивание около 1 500 записей, но он работает с более чем 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, прежде чем выходить из метода. Не уверен, что это может быть, по крайней мере, отчасти вызвать проблему, но хотел упомянуть об этом на всякий случай. это происходит только с моей объектно -ориентированной версией. действительно уверен, как продолжить.
Подробнее здесь: https://stackoverflow.com/questions/794 ... iented-php
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php
Anonymous » » в форуме Php - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php
Anonymous » » в форуме Php - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный PHP [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Alert(data.status) завершается с ошибкой, когда status=false, но не когда status=true
Anonymous » » в форуме Jquery - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-