"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية مراقبة عميل Guzzle Http – نصائح PHP السريعة

كيفية مراقبة عميل Guzzle Http – نصائح PHP السريعة

تم النشر بتاريخ 2024-11-08
تصفح:304

Guzzle هو عميل PHP HTTP شائع يسهل إرسال طلبات HTTP وإنشاء مكتبات خدمات الويب. توفر أطر عمل PHP الأكثر شيوعًا خدمة عميل Http داخلية، وهي ببساطة عبارة عن تطبيق مخصص لعميل Guzzle Http:

  • عميل Laravel Http
  • عميل Symfony Http
  • Laminas (Zend Framework سابقًا) عميل Http

يستخدم Guzzle على نطاق واسع لسببين رئيسيين:

1) التخصيص والمرونة

لمحبي أنماط التصميم، Guzzle مفتوح للإضافات. يعني أنه يمكنك بسهولة تنفيذ وظائف جديدة في Guzzle من خلال توسيع مكوناته الأساسية (Http Client، Request، Response، Milddeware، وما إلى ذلك).

2) دعم الوسيطة

يسمح نظام البرامج الوسيطة Guzzle للمطورين بالتفاعل مع الطلب قبل إرساله والاستجابة قبل معالجته. يمكنه تمكين الميزات المتقدمة مثل التسجيل والمصادقة ومعالجة الأخطاء.

مقدمة إلى عميل Guzzle HTTP

في هذا البرنامج التعليمي، سأرشدك خلال عملية إنشاء عميل Guzzle Http مخصص لتسهيل مراقبة كل طلب يتم إجراؤه من تطبيقك مقابل الخدمات الخارجية.

سأوضح لك أيضًا كيفية إدخال هذا التنفيذ في حاوية IoC (أو حاوية الخدمات) لإتاحة هذا التنفيذ في جميع أنحاء التطبيق الخاص بك.

سنغطي الأساسيات وخيارات التخصيص ونقدم أمثلة حقيقية على التعليمات البرمجية.

قم بتثبيت Guzzle

تأكد من تثبيت Guzzle. إذا لم يكن الأمر كذلك، فقم بتثبيته باستخدام Composer:

composer require guzzlehttp/guzzle

التخصيص الأساسي

لنبدأ بإنشاء عميل Guzzle Http أساسي مخصص:

namespace App\Extensions\Guzzle;

use GuzzleHttp\Client;

class CustomGuzzleClient extends Client 
{
    public function __construct(array $config = []) 
    {
        $config['headers']['Custom-Header'] = 'Custom-Value';
        parent::__construct($config);
    }
}

في هذا المثال، قمنا بتوسيع فئة عميل Guzzle Http وقمنا بتخصيص المُنشئ لإضافة رأس مخصص لجميع الطلبات المقدمة من هذا العميل.

مراقبة طلبات Guzzle Http

يوفر Guzzle طرقًا مختصرة لتشغيل طلبات Http:

$client->get('/endpoint');
$client->post('/endpoint');
$client->put('/endpoint');

تستخدم كل هذه الطرق طريقة الطلب العامة بالداخل. تم التقاط لقطة الشاشة أدناه من كود Guzzle Client:

How to monitor Guzzle Http Client – PHP Fast tips

يمكنك تجاوز طريقة الطلب لتخصيص إدارة مكالمات HTTP التي يجريها تطبيقك إلى الخدمات الخارجية.

namespace App\Extensions\Guzzle;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;


class CustomGuzzleClient extends Client 
{
    public function request($method, $uri, array $options = []) 
    {
        return inspector()->addSegment(function () use ($method, $uri, $options) {

            return parent::request($method, $uri, $options);

        }, "http", "{$method} {$uri}");
    }
}

في هذا المثال أقوم فقط بإضافة عنصر جديد في الجدول الزمني للمعاملة لكل طلب. يمكنك الآن رؤية استدعاءات واجهة برمجة التطبيقات (API) التي أجراها Guzzle في عرض المراقبة الخاص بك:

How to monitor Guzzle Http Client – PHP Fast tips

إذا كنت جديدًا في Inspector، فيمكنك اتباع هذا البرنامج التعليمي حول كيفية البدء:

https://inspector.dev/laravel-real-time-performance-monitoring-using-inspector-part-1/

يمكنك أيضًا إدخال معلمة المقطع في رد الاتصال للتفاعل مع العنصر أو إضافة المزيد من المعلومات:

namespace App\Extensions\Guzzle;

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use Inspector\Models\Segment;

class CustomGuzzleClient extends Client 
{
    public function request($method, $uri, array $options = []) 
    {
        return inspector()->addSegment(function (Segment $segment) use ($method, $uri, $options) {

            $response = parent::request($method, $uri, $options);
            $segment->label = "{$response->getStatusCode()} {$method} {$uri}";
            return $response;

        }, "http");
    }
}

استخدم عميل Http المخصص

الآن، يمكنك استخدام عميلك المخصص في تطبيقك. نظرًا لأن الامتداد لا يُحدث أي تغيير في سلوك عميل Guzzle Http القياسي، فيمكنك إنشاء مثيل للفئة المخصصة واستخدامها كالمعتاد:

// Create an instance of the custom client
$client = new CustomGuzzleClient(['base_uri' => 'https://api.example.com']);

// Make an API request. It will be automatically monitored by Inspector.
$response = $client->get('/endpoint');

قم بربط عميل Guzzle Http في الحاوية

سأستخدم Laravel في هذا المثال، لكن المفهوم الأساسي هو نفسه بالنسبة لأطر PHP الأكثر شيوعًا المذكورة في بداية المقالة. كلهم يعملون مع حاوية الخدمة.

نقوم بإنشاء ربط مفرد في الحاوية لفئة Guzzle Http Client. لذا فإن كل خدمة تطلب هذه الفئة ستتلقى مثيلًا لعميلنا المخصص الذي يدعم المراقبة في الوقت الفعلي.

use GuzzleHttp\Client;
use App\Extensions\Guzzle\CustomGuzzleClient;
use Illuminate\Contracts\Foundation\Application;

$this->app->singleton(Client::class, function (Application $app) {
    return new CustomGuzzleClient();
});

يمكنك الآن محاولة إدخال فئة Guzzle Http Client في أمر Artisan وتشغيل استدعاء Http للاختبار فقط:

namespace App\Console\Commands;


use Illuminate\Console\Command;
use GuzzleHttp\Client;

class TryCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'try';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Test Guzzle Http Client monitoring.';

    /**
     * Inject the Guzzle Http Client class into the constructor.
     * The CustomGuzzleClient will be the concrete class.
     */
    public function __construct(protected Client $client)
    {
        parent::__construct();
    }

    /**
     * Handle the command execution.
     */
    public function handle()
    {
        $this->line($this->description);

        $this->line("Concrete class: ".get_class($this->client));

        $this->client->get('https://google.com');

        return Command::SUCCESS;
    }
}

قم بتشغيل الأمر للتحقق مما إذا كان اتصال Http سيكون مرئيًا في المخطط الزمني للمعاملة:

php artisan try

جديد للمفتش؟ مراقبة التطبيق الخاص بك مجانا

Inspector عبارة عن أداة لمراقبة تنفيذ التعليمات البرمجية مصممة خصيصًا لمطوري البرامج. لا تحتاج إلى تثبيت أي شيء في البنية التحتية السحابية أو الخوادم الخاصة بك، فقط قم بتثبيت حزمة الملحن وستكون جاهزًا للبدء.

على عكس الأنظمة الأساسية المعقدة الأخرى، فإن Inspector سهل للغاية، وصديق PHP. يمكنك تجربة حزمة Laravel أو Symfony الخاصة بنا.

إذا كنت تبحث عن أتمتة فعالة، ورؤى عميقة، والقدرة على إعادة توجيه التنبيهات والإشعارات إلى بيئة المراسلة الخاصة بك، فجرب Inspector مجانًا. سجل حسابك.

أو تعرف على المزيد على الموقع: https://inspector.dev

How to monitor Guzzle Http Client – PHP Fast tips

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/inspector/how-to-monitor-guzzle-http-client-php-fast-tips-4ijg?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3