Сценарий оболочки CakePHP 3 увеличивает лимит времени ожидания выполнения

Я новичок в cakephp 3 и разрабатываю приложение, используя его и php 7.0.

У меня есть сценарий оболочки в /app/src/Shell, который подключается к веб-службе и использует данные JSON.

Проблема в том, что для получения данных требуется более 30 секунд.

Я уже пытался изменить max_execution_time в /etc/php/7.0/cli/php.ini и /etc/php/7.0/apache2/php.ini, но нет. успех.

Я что-то упускаю? Есть ли конфигурация в cakephp, которую нужно изменить?

Спасибо.


person hilton22    schedule 13.11.2018    source источник
comment
Вы путаете тайм-аут PHP с тайм-аутом объекта и веб-сервиса. Тайм-аут PHP по умолчанию равен 0 в CLI. Проблема заключается в тайм-ауте веб-сервиса и подключения к нему (клиентский объект и т. д.). Эти тайм-ауты трудно изменить (можно немного увеличить, но это приведет к нестабильному поведению). Вы должны убедиться, что никогда не выполняете запросы к веб-сервисам дольше нескольких секунд!   -  person mark    schedule 13.11.2018
comment
Спасибо @mark за разъяснения. Я связываюсь с разработчиком веб-сервиса, чтобы улучшить производительность API. При использовании Postman для тестирования ответ занимает в среднем от 46 до 50 секунд для получения данных.   -  person hilton22    schedule 13.11.2018
comment
Как именно вы звоните в веб-сервис? пожалуйста, предоставьте более подробную информацию   -  person Vadim    schedule 14.11.2018


Ответы (2)


Убедитесь, что вы ищете хороший файл конфигурации PHP, который вы используете, благодаря этой команде:

php -ini |grep "php.ini"
person Bsquare ℬℬ    schedule 13.11.2018
comment
Спасибо за ответ @Bsquare. Мой локальный хост использует /cli php.ini. Но я уже пытался изменить «max_execution_time» в /cli/php.ini, перезапустил службу, но безуспешно. - person hilton22; 13.11.2018
comment
Это странно, попробуйте поставить эту инструкцию в начале вашего скрипта на 100 % уверен, что ваша конфигурация хорошо продумана. - person Bsquare ℬℬ; 13.11.2018
comment
Неверный ответ, см. мой комментарий. - person mark; 13.11.2018

Редактировать: после того, что @mark сказал в своем комментарии, я провел небольшое исследование и нашел решение. Дело в том, что я использую клиентский класс Http для cakephp 3. Читая документы, я понял, что вы можете передать параметр «тайм-аут» в момент создания объекта.

Но, также следуя комментарию @mark, изменение значения тайм-аута не является хорошей практикой.

Спасибо всем за помощь!

person hilton22    schedule 13.11.2018
comment
cakephp теперь основан на композиторе. не уверен насчет класса Http Client, но в нескольких других клиентских библиотеках http изменение времени ожидания является нормальным и не приводит к каким-либо проблемам. Например, вы можете использовать docs.guzzlephp.org/en/stable/overview.html. #установка docs.guzzlephp.org/ ru/стабильный/ - person Vadim; 14.11.2018