У Magento 2 виникають ситуації, коли сторінка довго завантажєуться, і тоді ви отримуєте 500 фатальну помилку, обмеження пам’яті або помилку очікування (timeout error). Це називається нескінченним циклом (infinite loop) в PHP-коді, коли той самий код виконується знову і знову. Це пов’язано з основними проблемами Magento або, швидше за все, третьостороннім розширенням .
Щоб виправити нескінченний цикл (infinite loop) і знайти вхід у цикл, виконайте наведені нижче дії:
1. Відкрийте файл app/bootstrap.php та додайте наступний код у наступному після відкриваючого PHP тегу <?php рядку:
$_SERVER['MAGE_PROFILER'] = 'html';
2. Відкрийте файл vendor/magento/framework/Profiler.php та додайте наступний код на початок функції "public static function start($timerName, array $tags = null)" , напр.
private static $firsttime = null;
public static function start($timerName, array $tags = null)
{
if (!self::$firsttime) {
self::$firsttime = time();
}
if (time() - self::$firsttime > 10) { //10 - is seconds to wait
\Magento\Framework\Debug::backtrace(false, true, false); // Magento 2 Debug Backtrace
exit();
}
3. Відкрийте сторінку з проблемою нескінченного циклу.
4. Перевірте інформацію бектрейсу, щоб отримати уявлення про те, який код створює цикл. Зверніть увагу на кастомне розширення, ви повинні побачити його методи знову і знову в бектрейсі.
5. Після цього не забудьте скасувати зміни в bootstrap.php та Profiler.php