1. Go to this page and download the library: Download me-shaon/laravel-resilience library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
me-shaon / laravel-resilience example snippets
use App\Contracts\PaymentGateway;
use Illuminate\Support\Facades\Log;
use RuntimeException;
final class CheckoutService
{
public function __construct(
private PaymentGateway $paymentGateway
) {}
public function charge(int $amount): array
{
try {
$this->paymentGateway->charge($amount);
return ['status' => 'paid'];
} catch (RuntimeException $exception) {
Log::warning('Payment gateway timeout.', [
'amount' => $amount,
]);
return ['status' => 'retry'];
}
}
}
use App\Contracts\PaymentGateway;
use Illuminate\Support\Facades\Log;
use MeShaon\LaravelResilience\Facades\Resilience;
Log::spy();
Resilience::for(PaymentGateway::class)->timeout();
$result = app(CheckoutService::class)->charge(500);
Resilience::assertFallbackUsed(
$result['status'],
'retry',
'payment status after gateway timeout'
);
Resilience::assertLogWritten('warning', 'Payment gateway timeout.');
Resilience::deactivateAll();
use App\Contracts\PaymentGateway;
use MeShaon\LaravelResilience\Facades\Resilience;
Resilience::for(PaymentGateway::class)->timeout();
Resilience::deactivateAll();
Resilience::http()->timeout();
Resilience::mail()->exception(new \RuntimeException('Mail is down.'));
Resilience::cache()->latency(40);
Resilience::queue()->exception(new \RuntimeException('Queue is down.'));
Resilience::storage()->latency(40);
Resilience::cache('redis')->latency(40);
Resilience::mail('ses')->exception(new \RuntimeException('SES is down.'));
Resilience::queue('redis')->exception(new \RuntimeException('Redis queue is down.'));
Resilience::storage('s3')->timeout();