Я действительно озадачен этим. Я нахожусь в процессе преобразования очень большого веб -проекта из «линейного» кода PHP в «объектно -ориентированный» код PHP. До этого момента все прошло плавно. Вот ситуация. Из каждой записи и форматируют их в хорошем выходе, используя теги и т. Д. С кучкой эхоподобных поставщиков. Что -то вроде этого упрощенного примера: < /p>
$sql = "...querry syntax...";
$result = conn->query($sql);
while ($row = $result->fetch->object) {
echo "".$row->parameter."" // etc.
}
< /code>
Это было довольно сложное форматирование, но работало отлично и мог справиться с тысячами записей без каких -либо сбоев. Мой запрос на тестовый запуск - это вытягивание около 1500 записей. Я называю это так: < /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 (); После каждого рисунка в моем объекте записи, но это не помогает. происходит с моей объектно -ориентированной версией. Шокирующе, это первый раз, когда я столкнулся с проблемой со стеком за 5 лет, работая над этим проектом, поэтому я не совсем уверен, как продолжить. < /P>
Любые мысли или идеи ? Я надеюсь, что я здесь просто кость, и это что -то очевидное для кого -то еще ... lol
Спасибо все!
Подробнее здесь: https://stackoverflow.com/questions/794 ... iented-php
Status_stack_overflow при преобразовании моего кода в объектно -ориентированный php ⇐ Php
Кемеровские программисты php общаются здесь
1739481368
Anonymous
Я действительно озадачен этим. Я нахожусь в процессе преобразования очень большого веб -проекта из «линейного» кода PHP в «объектно -ориентированный» код PHP. До этого момента все прошло плавно. Вот ситуация. Из каждой записи и форматируют их в хорошем выходе, используя теги и т. Д. С кучкой эхоподобных поставщиков. Что -то вроде этого упрощенного примера: < /p>
$sql = "...querry syntax...";
$result = conn->query($sql);
while ($row = $result->fetch->object) {
echo "".$row->parameter."" // etc.
}
< /code>
Это было довольно сложное форматирование, но работало отлично и мог справиться с тысячами записей без каких -либо сбоев. Мой запрос на тестовый запуск - это вытягивание около 1500 записей. Я называю это так: < /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 (); После каждого рисунка в моем объекте записи, но это не помогает. происходит с моей объектно -ориентированной версией. Шокирующе, это первый раз, когда я столкнулся с проблемой со стеком за 5 лет, работая над этим проектом, поэтому я не совсем уверен, как продолжить. < /P>
Любые мысли или идеи ? Я надеюсь, что я здесь просто кость, и это что -то очевидное для кого -то еще ... lol
Спасибо все!
Подробнее здесь: [url]https://stackoverflow.com/questions/79437745/status-stack-overflow-when-converting-my-code-to-object-oriented-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия