Size: a a a

2020 December 06

АГ

Алексей Гевондян... in phpGeeks
можно поправить входные данные и дернуть метод еще раз...
источник

АГ

Алексей Гевондян... in phpGeeks
или тупо в случае "сервис недоступен, попробуйте еще раз", попробовать еще раз, прибавив счетчик
источник

АГ

Алексей Гевондян... in phpGeeks
когда с 5 раз не получилось - кидаешь то же исключение там
источник

G

GODU in phpGeeks
Алексей Гевондян
исключение кидается, когда "тут ошибка. сами разбирайтесь, что с этим делать"
Типо конкретная реализация
try {
   $response = $client->request('GET', 'http://gou');
}

catch (ConnectException $e) {
   file_put_contents('./text.txt', $e->getMessage() . Psr7\Message::toString($e->getRequest()));
  // или Log::write(...);
}

catch (Exception $e) {
   var_dump(get_class($e));
}


Есть гузл клиент, у него при не успешном request есть ConnectException, так норм делать?)
источник

АГ

Алексей Гевондян... in phpGeeks
норм.
источник

G

GODU in phpGeeks
Вроде понял, спасибо...
У меня есть в голове еще изощерености кооторые хотелось бы попробовать, мне главное понимать что я использую правильный подход по реализации данной задачи
источник

АГ

Алексей Гевондян... in phpGeeks
если у тебя ретрай с 5 попытками, то трай кетч оборачивается в цикл, в кетче проверяется счетчик попыток. если лимит превышен - кидаешь то же исключение (throw $e). если нет - прибавляешь счетчик, цикл продолжается,снова идет натрай, и т д
источник

G

GODU in phpGeeks
Алексей Гевондян
если у тебя ретрай с 5 попытками, то трай кетч оборачивается в цикл, в кетче проверяется счетчик попыток. если лимит превышен - кидаешь то же исключение (throw $e). если нет - прибавляешь счетчик, цикл продолжается,снова идет натрай, и т д
Сейчас осилить надо контекст_)
источник

АГ

Алексей Гевондян... in phpGeeks
лучше начни с того, что ты хочешь сделать) просто залогировать ошибку / проигнорить или как
источник

АГ

Алексей Гевондян... in phpGeeks
логирование - норм кейс
источник

G

GODU in phpGeeks
Алексей Гевондян
лучше начни с того, что ты хочешь сделать) просто залогировать ошибку / проигнорить или как
Я так понял в данной ситуации я логирую, но теперь стало интересно, как проигнорировать?)
источник

АГ

Алексей Гевондян... in phpGeeks
просто пустой кетч. логирование это своего рода тоже игнор.
источник

АГ

Алексей Гевондян... in phpGeeks
если у тебя ошибка - штатная ситуация, то и логи эти, скорее всего, никто читать не станет
источник

АГ

Алексей Гевондян... in phpGeeks
можно использовать их там для составления статистики, и т д
источник

G

GODU in phpGeeks
Алексей Гевондян
если у тебя ретрай с 5 попытками, то трай кетч оборачивается в цикл, в кетче проверяется счетчик попыток. если лимит превышен - кидаешь то же исключение (throw $e). если нет - прибавляешь счетчик, цикл продолжается,снова идет натрай, и т д
while($count <= 5) {
 try {
   //request
   ++$count;
  if ($count == 5)
     throw new Exception();
 } catch (Exception $e) {
 
 }
}
Не ?
источник

АГ

Алексей Гевондян... in phpGeeks
```
$count = 0;
while(true) {
 try {
   //request
 } catch (Exception $e) {
   ++$count;
  if ($count == 5){
     throw $e;
  }
 }
}
```
источник

АГ

Алексей Гевондян... in phpGeeks
GODU
while($count <= 5) {
 try {
   //request
   ++$count;
  if ($count == 5)
     throw new Exception();
 } catch (Exception $e) {
 
 }
}
Не ?
но и так можно тоже, да но у тебя теряется инфа, что случилось
источник

G

GODU in phpGeeks
Алексей Гевондян
но и так можно тоже, да но у тебя теряется инфа, что случилось
Понял) прикольно
источник

АГ

Алексей Гевондян... in phpGeeks
кстати не, так как ты написал - не сработает, потому что при падении реквеста у тебя не дойдет выполнение до увеличения счетчика, в итоге получаешь бесконечный ретрай
источник

G

GODU in phpGeeks
Алексей Гевондян
```
$count = 0;
while(true) {
 try {
   //request
 } catch (Exception $e) {
   ++$count;
  if ($count == 5){
     throw $e;
  }
 }
}
```
А тут строка throw $e заставит цикл завершится?
источник