class CampaignRenameListener implements ShouldQueue
{
use HasAdsToken;
use InteractsWithQueue;
public function __construct(
protected Client $client
) {
}
public function handle(CampaignRenameEvent $event): void
{
$token = $this->getTokenByCampaign($event->campaign);
if (!$token) {
throw new InvalidArgumentException(__('Token does not exist'));
}
$this->client->setToken($token);
// вот тут стучусь в сторонние апи (у клиента таймаут 7секунд)
$this->client->postRename()->request([
'advertId' => (int)$event->campaign->wb_id,
'name' => $event->newName
]);
}
public function failed(CampaignRenameEvent $event, Throwable $exception): void
{
$event->campaign->update(['name' => $event->oldName]);
}
}
Обязательно нужен отдельный пользователь для работы веб-сервера, субд, php-fpm, redis итд - каждому из них выдать доступ только к тем директориям и файлам, к которым им доступ необходим