Мы обрабатываем глобальные необработанные исключения посредством интеграций. Интеграции работают немного по-другому, поскольку они по сути являются одиночными и должны иметь возможность сохранять глобальное состояние, поскольку мы, например, не хотим многократно подключаться к глобальным обработчикам.
Для достижения того, что вы хотитевам необходимо использовать Hub
вместо Client
напрямую.
$client1 = Sentry\ClientBuilder::create([
'dsn' => 'DSN'
])->getClient();
$hub1 = new Sentry\State\Hub($client1);
// Making a Hub current, tells the global integrations to send stuff to the client registered in this Hub
Sentry\SentrySdk::setCurrentHub($hub1);
// This will be caught by and send by $client1
throw new Exception('DEMO TEST3');
$client2 = Sentry\ClientBuilder::create([
'dsn' => 'DSN'
])->getClient();
$hub2 = new Sentry\State\Hub($client2);
// Setting a new current hub here
Sentry\SentrySdk::setCurrentHub($hub2);
// This will be caught by and send by $client2
throw new Exception('DEMO TEST4');
Таким образом, только один концентратор может быть текущим концентратором одновременно, поэтому один из ваших клиентов должен быть тем, который обрабатывает глобальные исключения,Я надеюсь, что это имеет смысл.