Обновите Typo3 7.6 до 8.7, не удается заставить интерфейс работать в локальной тестовой среде с XAMPP

Я работаю над обновлением Typo3 7.6 до 8.7. Я делаю это на своем локальном компьютере с XAMPP в Windows с PHP 7.2.

Бэкэнд у меня заработал. Потребовалась некоторая ручная работа в БД, например, изменение CType в tt_content для моих собственных элементов контента, а также заполнение colPos.

Однако, когда я вызываю страницу во внешнем интерфейсе, все, что я получаю, - это тайм-аут:

    Fatal error: Maximum execution time of 60 seconds exceeded in
 C:\xampp\htdocs\typo3_src-8.7.19\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\Mysqli\MysqliStatement.php on line 92

(это не изменится, если я установлю max_execution_time на 300)


Обновлено: я добавил echo непосредственно перед строкой 92 в приведенном выше файле, это функция:

public function __construct(\mysqli $conn, $prepareString)
    {
        $this->_conn = $conn;
        echo $prepareString."<br />";
        $this->_stmt = $conn->prepare($prepareString);
        if (false === $this->_stmt) {
            throw new MysqliException($this->_conn->error, $this->_conn->sqlstate, $this->_conn->errno);
        }

        $paramCount = $this->_stmt->param_count;
        if (0 < $paramCount) {
            $this->types = str_repeat('s', $paramCount);
            $this->_bindedValues = array_fill(1, $paramCount, null);
        }
    }

Я получаю следующее утверждение 1000 раз, всегда одно и то же:

`SELECT `tx_fed_page_controller_action_sub`, `t3ver_oid`, `pid`, `uid` FROM `pages` WHERE (uid = 0) AND ((`pages`.`deleted` = 0) AND (`pages`.`hidden` = 0) AND (`pages`.`starttime` <= 1540305000) AND ((`pages`.`endtime` = 0) OR (`pages`.`endtime` > 1540305000)))`

Примечание: у меня нет записей на страницах с uid = 0. Так что я действительно не уверен, для чего это нужно. Нужна ли страница с uid = 0?


Я включил ведение журнала медленного запроса в mysql, но ничего не регистрирую с его помощью. Я не получаю дополнительных ошибок PHP и не получаю запись в журнале с опечаткой 3.

Так что сейчас я немного застрял и не знаю, что делать дальше.

Я включил общее ведение журнала для mysql, и когда я вызываю страницу на фронте, я получаю этот SQL-запрос, выполняемый снова и снова:

SELECT `tx_fed_page_controller_action_sub`, `t3ver_oid`, `pid`, `uid` FROM `pages` WHERE (uid = 0) AND ((`pages`.`deleted` = 0) AND (`pages`.`hidden` = 0) AND (`pages`.`starttime` <= 1540302600) AND ((`pages`.`endtime` = 0) OR (`pages`.`endtime` > 1540302600)))

выполнение этого запроса вручную возвращает пустой результат (у меня нет записей на страницах с uid = 0). Не знаю, значит ли это что-нибудь ...

Какие у меня есть варианты? Как я могу найти то, чего не хватает / где ошибка?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
149
2

Ответы 2

Первый: дайте вашему PHP больше времени для запуска. в конфигурации php.ini увеличьте максимальное время выполнения до 240 секунд. имейте в виду, что для TYPO3 в рабочем режиме рекомендуется 240 секунд. Если вы запустите инструмент для установки, вы можете выполнить Проверка системы и получить информацию о конфигурации, которая может нуждаться в оптимизации.

Второй: избегать режима разработки и использовать производственный режим. выполнение будет быстрее, но вы потеряете возможность отладки.

отладка всегда требует больше времени и памяти для подготовки всей этой информации. может быть, 240 секунд недостаточно, и вам даже нужно больше памяти.

О, раньше время выполнения было 300, я установил его, поэтому мне не нужно каждый раз ждать 5 минут, пока я не получу ошибку. второй: я установил все, что мог, в режим разработки / включил ведение журнала. Мне сейчас не нужна производительность, мне нужна информация. 5 минут (время выполнения 300 секунд) должно быть достаточно, чтобы показать мне простую целевую страницу, даже если все регистрируется. Есть ли что-то еще, что может повредить мне при запуске в режиме разработки?

nbar 23.10.2018 15:57

почти все, особенно если вы включите все виды отладочной информации. как отредактировано в моем ответе: проверьте систему в инструменте установки. тогда вам может потребоваться терпение, если у вас большие данные и сложная конфигурация.

Bernd Wilke πφ 23.10.2018 16:04
max_execution_time теперь установлен на 600, сообщит, если это что-нибудь изменится.
nbar 23.10.2018 16:07
max_execution_time на 600 ничего не меняет. Также typo3 не создает ничего в typo3temp, кроме папок и изображений из установочного инструмента (тестовые изображения).
nbar 23.10.2018 16:18

Я повторил утверждение в MysqliStatement.php: 92 и получил один и тот же запрос 1000 раз (см. Также редактирование моего вопроса). Есть идеи, какой должна быть страница uid = 0?

nbar 23.10.2018 16:37

в таблице pages какая информация должна быть в поле tx_fed_page_controller_action_sub (поле, которое запрашивается 1000 раз). Я проверил таблицу страниц, и tx_fed_page_controller_action_sub пуст во всех записях.

nbar 23.10.2018 16:54

«страница» с uid - это корневая страница вашего дерева страниц. Для этой «страницы» нет записей. и у вас есть записи на этой «странице», поскольку каждая запись, не назначенная отдельной странице, «размещается» здесь (например, be-users, languages, ...). Но как сказал Даниэль: попробуйте отключить расширение (а). Я также подозреваю, что отсутствует условие корневой страницы, поэтому существует бесконечный доступ к корневой строке. Ваш вывод уже начинается с запросов page.uid "0"?

Bernd Wilke πφ 24.10.2018 07:13

Поле tx_fed_page_controller_action_sub поступает от расширения, оно не является частью ядра. Скорее всего, в вашей системе установлены flux и fluxpages.

Попробуйте отключить эти расширения и продолжить без них. Реинтегрируйте их позже, если они вам все еще понадобятся. Тайм-аут часто означает, что происходит какая-то рекурсия. Исходя из моего опыта работы с потоком, возможно, что элемент содержимого сам установлен как собственный flux_parent и, следовательно, создает бесконечный цикл рендеринга, который приведет к фатальному завершению после max_execution_time.

Итак, в вашем случае я бы попытался найти запись, которая вызывает это (похоже, это запись страницы) и / или код, который инициирует запрос. В самой Doctrine отлаживать не нужно :)

Другие вопросы по теме