blog details

  • By Nesma Elsayed
  • 07 Feb 2024
  • 0 Comments

PHP

نظام لاستيراد المحتوى بلغة PHP: لماذا؟

دعونا نتحدث قليلا عن التاريخ. كان Deezer في الأصل Blogmusik.net، وهو عبارة عن منصة لتنزيل الموسيقى أسسها دانييل مارهيلي عام 2007 وتم تطويرها بالكامل بلغة PHP.

"فوائد"

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

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

إحدى المزايا الأخرى هي أن المطورين لم يكن لديهم سوى حزمة تكنولوجية واحدة لنشرها. توفير الوقت الثمين للغاية.

و"عيوب"

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

لم يكن PHP متعدد الخيوط في الأصل. توجد الآن مكتبة "أصلية" ولكننا لا نزال بعيدين عن التكامل البسيط والفعال الذي يمكن أن تقدمه اللغات الأخرى.

PHP كانت ولا تزال موجهة نحو الويب. ونتيجة لذلك، هناك العديد من المكتبات لتسهيل تطوير الويب … ولكن هناك عدد أقل بكثير لتطوير الواجهة الخلفية. تظهر المكتبات بانتظام وفقًا لاحتياجات مؤلفيها، لكن بعض الفرق ليس لديها الوقت الكافي للقيام بتطوير هذه الأدوات.

إدارة كميات كبيرة من البيانات في PHP

فكيف يمكننا التغلب على هذه "العيوب"؟

موازاة تنفيذ البرنامج النصي

حتى لو لم تكن لغة PHP متعددة الخيوط، فمن الممكن تشغيل نفس البرنامج النصي عدة مرات باستخدام وسائط مختلفة من أجل معالجة البيانات المختلفة بالتوازي.

العيب الوحيد مقارنة بتعدد الخيوط: لا تتم مشاركة موارد الذاكرة ولكن يمكن حلها باستخدام نظام ذاكرة التخزين المؤقت.

القيام بالمعالجة غير المتزامنة

يتم تنفيذ البرنامج النصي من الناحية الإجرائية: إذا تم حظر المهمة، ينتظر البرنامج النصي حتى يكتمل ثم يتابع. ومع ذلك، إذا لم تكن هناك حاجة إلى نتيجة البرنامج النصي للمتابعة، فمن الأفضل بدء هذه المعالجة بشكل غير متزامن وعدم منع تنفيذ البرنامج النصي.

التوازي

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

لقد اخترنا موازاة النصوص ولدينا نص رئيسي ينسقها جميعًا. دورها حاسم، يجب أن تكون فعالة ولكن بسيطة:

تحقق مما إذا كان هناك أشياء للقيام بها
قم بتشغيل برنامج نصي واحد أو أكثر (إذا لزم الأمر) باستخدام المعلمات المناسبة للتعامل مع المعالجة الثقيلة

لتجنب التحميل الزائد على خوادم الواجهة الخلفية، تحتاج البرامج النصية أيضًا إلى تنظيم التحميل.

إذا لم يكن هناك ما يجب القيام به، فلن يتم بدء تشغيل أي منخفض
إذا زاد عدد العناصر المراد معالجتها، يطلق البرنامج النصي الرئيسي عددًا من الاشتراكات بالتوازي للتعامل مع عبء العمل

المزايا الأخيرة للنظام الرئيسي/المشترك: يتم تحرير الذاكرة بمجرد انتهاء البرنامج النصي ونمنع تسرب الذاكرة وتعطلها.

قمنا أيضًا بإعداد برنامج نصي "خادم" لتلقي الأوامر للتنفيذ من خلال نظام مأخذ التوصيل. الميزة هنا هي وجود "خادم" على كل جهاز خلفي وبالتالي توزيع الحمل على أجهزة مختلفة.

معالجة غير متزامنة

يسمح خادم الأوامر المذكور أعلاه أيضًا بالتنفيذ غير المتزامن.

البرنامج النصي الذي يرسل الطلب إلى الخادم ينتظر فقط قبول الرسالة من قبل الخادم. يؤدي هذا إلى منع حظر تنفيذ البرنامج النصي أثناء تشغيل أمر سيعيد تشغيل البرنامج النصي لإجراء معالجة إضافية.

أخيرًا، من أجل توزيع الحمل بشكل أفضل على المراحل المختلفة لمعالجة البيانات، قمنا بتنفيذ نظام ذيل بسيط نسبيًا.

وبالتالي نستفيد من الموازاة وتكييف الحمل.

أفكار للمستقبل

في الوقت الحالي، نظام الانتظار الخاص بنا مخصص للنشر، لكن الحاجة إلى تشغيل المهام بشكل غير متزامن تصبح أكثر أهمية ومتكررة.

كما أننا نواجه حاليًا قيودًا في إضافة المهام غير المتزامنة. على سبيل المثال، نود إضافة عنصر إلى قائمة الانتظار التي ستتم معالجتها في تاريخ/وقت معين، خاصة للتعامل مع إلغاء مزامنة ذاكرة التخزين المؤقت بين أوروبا وأمريكا، والذي يحدث أحيانًا ويرتبط بتأخير النسخ المتماثل لـ SQL.

سنحتاج على سبيل المثال إلى تحديث ذاكرة التخزين المؤقت، ولكن بعد ثوانٍ أو دقائق قليلة من الانتظار، وليس على الفور.

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

Leave a Comment

name*
email*
message*

إشترك الآن

احصل على التحديثات والعروض والنصائح وعزز تجربة بناء صفحتك

Up to Top