محتويات الدورة

PHP / متقدم: النماذج الموثوقة وأدلة التشغيل / الدرس 16

الأداء والتخصيص وأدلة التشغيل

حسّن حملاً صحيحاً بفرضية مقاسة وبيانات محدودة. ميّز الخوارزمية وعمر الطلب وOPcache وJIT وكلفة القاعدة دون وصفات ضبط عامة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • قياس عملية كاملة ممثلة.
  • شرح الاحتفاظ والمخبأ المحدود.
  • فصل إمكانات التشغيل من تسريع مثبت.

البدء بنتيجة بطيئة محددة

سمّ النتيجة والحجم والبيئة والهدف. افصل الحساب والقاعدة والتسلسل والملفات والنقل قبل لوم اللغة. قد لا يفيد مساعد أسرع إن غلبت القاعدة. وثّق الإصدار والامتداد والمخبأ والإحماء والتكرار والتباين. احفظ الصحة حتى لا يعد حذف السجلات تحسيناً. يستخدم الفصل أعداد عمليات ومخرجات محلية لا توقيت إنتاج مختلقاً.

يستبدل الفهرس الذاكرة بعمل البحث المتكرر

قد تهدر المسوحات عملاً عند تكرار البحث. تقلل خريطة المعرف المقارنات بكلفة ذاكرة وإبطال. يعد المثال المقارنات ويؤكد المعرفات نفسها دون إثبات تعقيد محرك أو تسريع عام. قد تكلف الخريطة للصغير أكثر؛ فافحص التكرار والحجم والتفرد والتعديل وحدد سلوك المعرف المكرر.

php دليل عمليات لا معيار توقيت
<?php
declare(strict_types=1);
$rows = [["id" => 1], ["id" => 2], ["id" => 3]];
$wanted = [3, 1, 3]; $comparisons = 0; $found = [];
foreach ($wanted as $id) {
    foreach ($rows as $row) {
        $comparisons++;
        if ($row["id"] === $id) { $found[] = $row["id"]; break; }
    }
}
$index = array_column($rows, null, "id");
$mapped = array_map(fn(int $id): int => $index[$id]["id"], $wanted);
echo $comparisons, PHP_EOL;
echo $found === $mapped ? "same
" : "different
";
الناتج المتوقع
7
same

تنتج المسوحات 3 و1 و3 سبع مقارنات، وتحفظ النتيجة المفهرسة ترتيب الطلب.

يتبع الاحتفاظ الملاك وعمر العملية

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

تسمية سياسة المخبأ المنفذة فعلاً

يحتاج المخبأ مفتاحاً وحداً وإبطالاً وملكية. يخلي المثال الأقدم إدراجاً عند ثالث يتجاوز اثنين، وليس LRU لأن القراءة لا تجدد. قد تحتاج البيانات نطاق المستخدم والمؤسسة وإبطال الإذن لئلا يكشف التحسين بيانات آخر. ميّز الفقد والفشل والفراغ، وقس الإصابات قبل التعقيد واحتفظ بمقارنة صحيحة بلا مخبأ.

php مخبأ محدود بترتيب الإدراج
<?php
declare(strict_types=1);
$cache = [];
foreach (["A" => 1, "B" => 2, "C" => 3] as $key => $value) {
    $cache[$key] = $value;
    if (count($cache) > 2) { unset($cache[array_key_first($cache)]); }
}
echo implode(",", array_keys($cache)), " ", count($cache), PHP_EOL;
الناتج المتوقع
B,C 2

يثبت حد الحجم فقط ولا يدعي نسبة إصابة أو فائدة زمنية.

OPcache وJIT قدرات للتقييم

يحفظ OPcache الشيفرة المترجمة لتقليل التكرار، وقد يحسن JIT أنماطاً ولا يضمن سرعة طلب تغلبه القاعدة. يختلف إعداد CLI والويب فلا يثبت php -v سلوك المخبأ. تحتاج التغييرات قياساً وموارد وإبطالاً صحيحاً. افصل الترقية لتشخيص الانحدار. لاختناق القاعدة افحص العدد والخطة والحجم والمدة بمعزل مصرح بدلاً من وصفة ذاكرة أو عمال عامة.

الأخطاء الشائعة وإصلاحها

وعد JIT بتسريع كل طلب

لماذا يحدث؟
الخلط بين القدرة وفائدة الحمل المقاسة.
كيف تصلحه؟
قياس عمل صحيح كامل ممثل.
كيف تتجنب تكراره؟
توثيق الإعداد ومقارنة أساس مضبوط.

تسرب بيانات المخبأ بين الفاعلين

لماذا يحدث؟
نقص نطاق المفتاح وإبطال الإذن.
كيف تصلحه؟
إضافة النطاق والإبطال للتغير المعني.
كيف تتجنب تكراره؟
اختبار مستخدمين مصطنعين وصلاحية متقادمة.

وصف عينة ذاكرة واحدة بتسرب

لماذا يحدث؟
الخلط بين التخصيص والنمو المستمر.
كيف تصلحه؟
تكرار النمو وتحديد المالك المحتفظ.
كيف تتجنب تكراره؟
اختبار التنظيف عبر المهام المتكررة.

اختبر فهمك

1. ماذا يثبت مثال المقارنات السبع؟

اعرض الحل المشروح

يثبت عدد المقارنات وتكافؤ ترتيب المعرفات لا سرعة زمنية لبيانات أخرى. قس العمل كاملاً مع بناء الفهرس والذاكرة قبل قرار التصميم.

2. لماذا ليس المخبأ LRU؟

اعرض الحل المشروح

يتتبع الإدراج ولا يجدد بالقراءة. تحتاج الحداثة سلوكاً واختبارات قراءة واستبدال وإخلاء. سمّ البسيط بصدق لا باسم تنفيذ آخر.

أهم ما تعلمته

  • يجب أن يحفظ دليل الأداء الصحة ويبين الشروط.
  • تحتاج كلفة الخوارزمية والمخبأ والقاعدة والتشغيل تشخيصات مختلفة.

المراجع الرسمية