Как защитить мой API от тайм-аута Sentry.io Curl? - PullRequest
1 голос
/ 17 января 2020

Я использую PHP Sentry SDK в API (и клиент JS также на внешнем интерфейсе), и сегодня я столкнулся с ошибкой, вызванной тайм-аутом Curl, который, как я полагаю, говорит клиент Sentry SDK вернуться к своему хозяину. Хотя у меня нет полной трассировки стека, я не использую Curl ни для чего другого.

Я использую Sentry в течение нескольких месяцев, и раньше этого не замечал.

На самом деле это не ошибка приложения, поэтому я догадался, что Sentry все равно подключался, что меня удивило. Я думал, что это будет работать только при обнаружении ошибки. У меня есть только бесплатная учетная запись basi c, в которой только "Issues" нет "Events".

Казалось, она зависла так долго, что максимальное время выполнения 30s PHP истекло, поэтому я получил ошибку 500 из моего API. (На самом деле ошибка 500 должна исходить от Apache, похоже, она не перехвачена установленным мной обработчиком shutdown + error.)

[17-Jan-2020 02:07:40 UTC] PHP Fatal error: Maximum execution time of 30 seconds exceeded in api/vendor/php-http/curl-client/src/MultiRunner.php on line 87

У меня есть basi c boot config: Sentry\init(['dsn' => $config['sentry_dsn']]);

Кажется, ирония c, что моя обработка ошибок должна иногда нарушать API! Поэтому я хочу защитить себя от этого - даже если это редко.

Можно ли добавить какую-либо конфигурацию в Sentry или Curl, например, чтобы завершить работу изящно через максимум 10 секунд?

Я ничего не видел здесь: https://docs.sentry.io/error-reporting/configuration/?platform=php

Или есть другой способ сделать Sentry более "фоновым", чтобы он не мог заблокировать путь основного кода?

...