مراقبة تطبيقات PHP: الأدوات والممارسات للمطور

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مراقبة تطبيقات PHP: من المقاييس الأساسية إلى التنميط المتقدم



مراقبة تطبيقات PHP ليست مجرد "التأكد من أن الموقع لم يتعطل". إنها عملية شاملة لجمع وتحليل وتصور البيانات حول أداء الكود والخادم وقاعدة البيانات. بالنسبة للبوابة التعليمية pythonlib.ru (الموجهة نحو PHP)، قمنا بتجميع الأدوات والمنهجيات الرئيسية التي ستساعدك على متابعة نبض مشروعك.



لماذا نراقب PHP؟

  • اكتشاف الاختناقات: استعلامات بطيئة لقاعدة البيانات، حلقات طويلة، خوارزميات غير مثالية.
  • منع الأعطال: أخطاء فادحة، تجاوز حدود الذاكرة، نقص مساحة القرص.
  • تحليل تجربة المستخدم: وقت تحميل الصفحات، عدد الطلبات في الثانية (RPS)، نسبة الأخطاء.
  • الأمان: أنماط طلبات مشبوهة، هجمات الحقن.


أدوات المراقبة الرئيسية لـ PHP



1. Xdebug — كلاسيكيات التنميط

Xdebug هو إضافة لـ PHP توفر تتبع المكدس والتنميط وتصحيح الأخطاء. للمراقبة، استخدم وضع التنميط (profiler_enable_trigger).

مثال على تكوين php.ini:

zend_extension=xdebug.soxdebug.mode=profilexdebug.output_dir=/tmp/xdebugxdebug.profiler_output_name=cachegrind.out.%p

النتيجة — ملفات cachegrind.out التي يمكن تحليلها باستخدام KCachegrind أو Webgrind.



2. Pinba — مراقبة في الوقت الفعلي

Pinba (PHP Is Not A Bottleneck Anymore) هو جامع مقاييس خفيف الوزن يعمل كوحدة PHP وخادم بلغة C. يرسل بيانات حول وقت التنفيذ والذاكرة وعدد الطلبات والأخطاء إلى MySQL.

مثال على الاستخدام في الكود:

// ضبط المؤقتpinba_timer_start('my_script');

// الكود الخاص بك$data = heavyCalculation();

// إيقاف المؤقت وإرسال البياناتpinba_timer_stop('my_script');

// علامات إضافيةpinba_script_name_set('api/v1/users');pinba_hostname_set('web-01');

تدخل البيانات تلقائيًا إلى جداول Pinba، حيث يمكن تصورها في Grafana.



3. Tideways — أداة تنميط تجارية

Tideways (المعروفة سابقًا باسم XHProf) هي إضافة لـ PHP تسمح بتنميط بيئة الإنتاج بأقل تكاليف إضافية. تجمع:

  • وقت تنفيذ كل دالة.
  • عدد الاستدعاءات.
  • استهلاك الذاكرة.

التثبيت عبر Composer:

composer require tideways/php-xhprof-extension

بدء التنميط:

$profiler = new Tideways\\Profiler();$profiler->start();

// الكود الخاص بك$result = expensiveOperation();

$profiler->stop();$data = $profiler->getCallgraph(); // بيانات للتصور


تسجيل الأخطاء: أساس المراقبة

بدون تسجيل عالي الجودة، تكون المراقبة عديمة الفائدة. استخدم مكتبات متوافقة مع PSR-3، مثل Monolog.

مثال على إعداد Monolog لإرسال الأخطاء الحرجة إلى Telegram:

use Monolog\\Logger;use Monolog\\Handler\\TelegramBotHandler;

$logger = new Logger('app');$handler = new TelegramBotHandler( 'YOUR_BOT_TOKEN', 'YOUR_CHAT_ID', Logger::CRITICAL);$logger->pushHandler($handler);

try { // كود خطير} catch (\\Throwable $e) { $logger->critical('خطأ في وحدة الدفع', [ 'exception' => $e, 'user_id' => $userId, 'ip' => $_SERVER['REMOTE_ADDR'] ]);}


المقاييس للتتبع

فيما يلي الحد الأدنى من مجموعة المقاييس لأي تطبيق PHP:

  • وقت الاستجابة (Response Time) — المتوسط، والنسب المئوية 95 و 99.
  • عدد الطلبات في الثانية (RPS) — عدد الطلبات التي يعالجها التطبيق في الثانية.
  • معدل الأخطاء (Error Rate) — النسبة المئوية للطلبات التي تنتهي بخطأ (4xx، 5xx).
  • استخدام الذاكرة (Memory Usage) — الذاكرة الحالية والذروة لكل طلب.
  • وقت استعلامات قاعدة البيانات (Database Query Time) — إجمالي الوقت المستغرق في استعلامات SQL.


الخلاصة

المراقبة الفعالة لتطبيقات PHP هي مزيج من الأدوات الصحيحة (Xdebug للتنميط، Pinba للمقاييس في الوقت الفعلي، Tideways للإنتاج) وسجلات منظمة (Monolog) ومجموعة واضحة من المقاييس. ابدأ بالأساسيات: قم بإعداد تسجيل الأخطاء، وتتبع وقت الاستجابة، واستخدام الذاكرة. ثم انتقل إلى التنميط التفصيلي لتحسين الأجزاء البطيئة من الكود. تذكر: المراقبة ليست رفاهية، بل ضرورة لأي مشروع جاد.

توصيات