В этом статье я опишу что делать если не грузится страница донора и в логах модуля вы видите ошибку на подобие
2022-07-21 13:09:42| Парсинг : НЕГАТИВНЫЙ ответ | Код ответа = 28 | Текст ответа = Operation timed out after 15006
Чаше всего эта ситуация возможна при работе с файлами xml или yml в Обработчике xml поскольку эти файлы могут весить очень много и содержать десятки тысяч строк, а это значит что на обработку такого файла необходимо много времени.
Расшифровка лога.
Парсинг : НЕГАТИВНЫЙ ответ | Код ответа = 28 | Текст ответа = Operation timed out after 15006
Эта запись расшифровывается как:
НЕГАТИВНЫЙ ответ - Запрос был неудачный, модуль не получит ответ от донора.
Код ответа = 28 - Внутренний код ошибки cURL (Для более опытных пользователей)
Текст ответа = Operation timed out after 15006 - Расшифровка ошибки cURL, гласит что за 15 секунд донор не успел завершить передачу данных. Пока не будет передана вся страница целиком cURL* не сможет передать ее для работы в модуль SimplePars.
Решение
По умолчанию в модуле SimplePars стоит время ожидания ответа на запрос 15сек. Но можно установить 25сек.
Перейдите в вкладку Настройки запросов и выберите максимальное время выполнения запроса в 25сек и повторите запрос.
Не забываем сохранить настройки!!!
Если после изменения времени запросов ошибка осталась
Если ошибка осталась значить 25 сек недостаточно донору что бы передать весь файл, в таком случаи вам нужно выполнить следующие шаги.
Узнать максимальное время выполнения php скриптов на вашем хостинге. Если оно равно 30 сек или меньше то без увеличения этого времени на хостинге данная задача не может быть решена. Это не зависит от модуля SimplePars так как даже если он будет хотеть ждать дольше ответа от донора, сам веб сервер остановит выполнения работы.
Если у вас на хостинге разрешено выполнять скрипты дольше 30 секунд или хостинг изменил настройки для вас. Допустим до 300сек В данном случаи вы можете внести в модуль правки что бы увеличить время выполнения.
Для движков на базе Opencart 2
Открываете файл
/admin/view/template/catalog/simplepars_browser.tpl
Находите строку
<option value="25" <?php echo ($browser['timeout'] == 25)?'selected':''?>>25 сек
После нее дописываете
<option value="250" <?php echo ($browser['timeout'] == 250)?'selected':''?>>250 сек
Теперь вы можете выбрать время запроса в 250сек
Для движков на базе Opencart 3
Открываете файл
/admin/view/template/catalog/simplepars_browser.twig
Находите строку
<option value="25" {{ browser['timeout'] == 25?'selected':''}}>25 сек
После нее дописываете
<option value="250" {{ browser['timeout'] == 250?'selected':''}}>250 сек
Если используете кешировани шаблона то не забудьте очистить кеш. Это касается только движков на версии opencart 3
Теперь вы можете выбрать время запроса в 250сек
После внесения изменений будет доступна время в 250сек на запрос.
Важно!!! Обратите внимание что таким методом можно указать любое время на выполнения, но оно должно быть не больше 85% от максимального времени выполнения скриптов на вашем хостинге.
Если это не решает вопрос то проблема уже не в модуле и не в хостинге, а донор банально отказывается отдавать ответ. Такое бывает редко но бывает. В этом случаи нужно использовать настройки запросов для обхода блокировок.
Сноска *
cURL - это встроенная в операционную систему библиотека для отправки запросов. SimplePars использует ее для запросов на сторонние сайты. Данная библиотека не является разработкой автора модуля SimplePars и не может правится им.
Подробнее об cURL - Википедия cURL