فاست سي جي آي

FastCGI هو بروتوكول ثنائي لربط البرامج التفاعلية بخادم الويب . وهو نسخة معدلة من بروتوكول Common Gateway Interface (CGI) السابق. يهدف FastCGI بشكل أساسي إلى تقليل الحمل الزائد المرتبط بالربط بين خادم الويب وبرامج CGI، مما يسمح للخادم بمعالجة عدد أكبر من طلبات صفحات الويب في وحدة زمنية واحدة.

تاريخ

واجهة البوابة العامة (CGI) هي مواصفات واجهة تسمح للتطبيقات الخارجية بالتفاعل مع خوادم الويب. تعمل تطبيقات CGI في عمليات منفصلة ، ​​تُنشأ عند بدء كل طلب وتُغلق عند انتهائه. يُسهّل نموذج "عملية جديدة لكل طلب" هذا تنفيذ برامج CGI، ولكنه يحدّ من كفاءتها وقابليتها للتوسع. عند الأحمال العالية، يصبح عبء نظام التشغيل لإنشاء العمليات وإغلاقها كبيرًا. كما يُقيّد نموذج عمليات CGI أساليب إعادة استخدام الموارد، مثل إعادة استخدام اتصالات قواعد البيانات، والتخزين المؤقت في الذاكرة، وما إلى ذلك.

لمعالجة أوجه القصور في قابلية التوسع في CGI، طورت شركة Open Market تقنية FastCGI وقدمتها لأول مرة في منتج خادم الويب الخاص بها في منتصف التسعينيات. وقد طورت Open Market تقنية FastCGI في الأصل جزئيًا كرد فعل تنافسي على واجهات برمجة التطبيقات (APIs) الخاصة بشركة Netscape ( واجهة برمجة تطبيقات خادم Netscape (NSAPI)) لتطوير تطبيقات الويب.

على الرغم من أن شركة Open Market طورت FastCGI في البداية، إلا أنها انتشرت لاحقًا بين العديد من شركات تصنيع خوادم الويب الأخرى. مع ذلك، واجهت هذه التقنية منافسة من طرق أخرى لتسريع وتبسيط عملية التواصل بين الخادم والبرامج الفرعية. ظهرت وحدات خادم Apache HTTP ، مثل mod_perl و mod_php، في نفس الفترة تقريبًا، وسرعان ما اكتسبت شعبية واسعة. اعتبارًا من عام 2020، ولا تزال جميع هذه الأساليب المختلفة، بما في ذلك الصور المولدة بالحاسوب، شائعة الاستخدام.

تفاصيل التنفيذ

بدلاً من إنشاء عملية جديدة لكل طلب، يستخدم FastCGI عمليات مستمرة لمعالجة سلسلة من الطلبات. هذه العمليات مملوكة لخادم FastCGI، وليس لخادم الويب. [ 1 ]

لتلبية طلب وارد، يرسل خادم الويب معلومات متغيرات البيئة وطلب الصفحة إلى عملية FastCGI عبر مقبس نطاق Unix ، أو قناة اتصال مُسماة ، أو اتصال بروتوكول التحكم بالنقل (TCP). تُعاد الاستجابات من العملية إلى خادم الويب عبر نفس الاتصال، ثم يُرسل خادم الويب تلك الاستجابة إلى المستخدم النهائي . قد يُغلق الاتصال عند انتهاء الاستجابة، لكن كلاً من خادم الويب وعملية خدمة FastCGI تستمران في العمل. [ 2 ]

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

يجد مديرو المواقع الإلكترونية والمبرمجون أن فصل تطبيقات الويب عن خادم الويب في FastCGI يوفر مزايا عديدة مقارنةً بالمترجمات المضمنة ( مثل mod_perl و mod_php ). يتيح هذا الفصل إعادة تشغيل عمليات الخادم والتطبيق بشكل مستقل ، وهو أمر بالغ الأهمية للمواقع الإلكترونية ذات الزيارات الكثيفة. كما يُمكّن من تطبيق سياسات أمان خاصة بكل تطبيق على حدة، وهو شرط أساسي لمزودي خدمات الإنترنت وشركات استضافة المواقع. [ 3 ] يمكن توزيع أنواع الطلبات الواردة المختلفة على خوادم FastCGI مُخصصة ومُجهزة للتعامل مع هذه الأنواع من الطلبات بكفاءة.

خوادم الويب التي تدعم تقنية FastCGI

ملاحظة: ما لم يُذكر خلاف ذلك، فإن اكتمال تطبيق FastCGI غير معروف.

روابط اللغة لواجهة برمجة التطبيقات الخاصة بها

يمكن تطبيق FastCGI بأي لغة تدعم مقابس الشبكة . ولأن FastCGI بروتوكول وليس تطبيقًا، فهو غير مرتبط ارتباطًا وثيقًا بأي لغة برمجة محددة. توجد واجهات برمجة تطبيقات (APIs) لما يلي: [ 18 ]

تسمح الأطر الحديثة مثل Ruby on Rails و Catalyst و Django و Kepler و Plack بالاستخدام إما مع المفسرات المضمنة ( mod_ruby أو mod_perl أو mod_python أو mod_lua، على سبيل المثال)، أو FastCGI.

مراجع

  1. "مواصفات FastCGI" . شركة أوبن ماركت ، 1996. مؤرشفة من الأصل في 19 يناير 2016.
  2. "FastCGI: واجهة خادم ويب عالية الأداء" . شركة أوبن ماركت، 1996. مؤرشف من الأصل في 1 أكتوبر 2010.
  3. هاينلين، بول (1 نوفمبر 1998). "FastCGI: تطبيقات مستمرة لخادم الويب الخاص بك" . مجلة لينكس . تم الاطلاع عليه في 4 أكتوبر 2010 .
  4. وحدة أباتشي FastCGI mod_fcgid
  5. خطأ دبيان رقم 450748: يرجى إضافة دعم لخوادم TCP/IP FastCGI
  6. مشاكل مع Apache 2.4 و PHP-FPM
  7. libapache-mod-fastcgi على جيثب
  8. "FastCGI – الكنز المنسي/ القسم 2.3" . مؤرشف من الأصل بتاريخ 2010-02-08 . تم الاطلاع عليه بتاريخ 2006-02-21 .
  9. بروتوكول نقل FastCGI — الوكيل العكسي (توجيه ملف Caddyfile) — وثائق Caddy
  10. فاست سي جي آي لشيروكي
  11. "دليل استخدام FastCGI لـ Hiawatha" . مؤرشف من الأصل بتاريخ 11-10-2018 . تم الاطلاع عليه بتاريخ 27-07-2010 .
  12. 1 2 "دعم FastCGI في Jetty" . مؤرشف من الأصل بتاريخ 24-03-2020 . تم الاطلاع عليه بتاريخ 23-03-2017 .
  13. FastCGI لـ Lighttpd
  14. "إضافة FastCGI لـ IIS 6.0 - الإصدار النهائي" . FastCGI لـ IIS . مايكروسوفت. 28-02-2008 . تم الاطلاع عليه بتاريخ 29-02-2008 .
  15. "وحدة FastCGI Nginx ngx_http_fastcgi_module" . nginx.org . NGINX, Inc. تم الاطلاع عليه بتاريخ 20 يونيو 2021 .
  16. أول تحديث لـ httpd(8) في OpenBSD
  17. "الورقة الفنية" . مؤرشفة من الأصل بتاريخ 21-01-2018 . تم الاطلاع عليها بتاريخ 19-09-2016 .
  18. مكتبات التطبيقات، مجموعات التطوير
  19. "ماتريشكا" . مؤرشف من الأصل بتاريخ 20-01-2018 . تم الاطلاع عليه بتاريخ 06-10-2011 .
  20. ExtPascal
  21. كيفية استخدام FastCGI من Common Lisp
  22. غوانا إيفل
  23. jFastCGI، وهو تطبيق جافا سيرفلت يُنفذ بروتوكول FastCGI
  24. حزمة node-fastcgi npm
  25. هناك العديد من وحدات FastCGI لـ Perl: FCGI (وحدة مُجمّعة مكتوبة بلغة C)، FCGI::Async (لتطبيقات FastCGI غير المتزامنة)، AnyEvent::FCGI ( للتطبيقات القائمة على AnyEvent )، FCGI::EV ( للتطبيقات القائمة على EV )، CGI::Fast (واجهة شبيهة بـ Perl CGI لـ FastCGI)، FCGI::Client (مكتبة عميل FastCGI)، و Net::FastCGI (ثوابت ووظائف لإنشاء وتحليل رسائل FastCGI).
  26. "PHP: مدير عمليات FastCGI (FPM) - دليل المستخدم" .
  27. FasterCGI مع HHVM
  28. توجد العديد من حزم Rust: تطبيق المستمع هو fastcgi ، و fastcgi-client هو تطبيق العميل.
  29. برنامج REAL Studio Web Edition، يُنشئ تطبيقات ويب يتم استدعاؤها عبر FastCGI. مؤرشف بتاريخ 8 فبراير 2011 على موقع Wayback Machine.
  • "أرشيف FastCGI.com" . تم الاطلاع عليه بتاريخ 1 مايو 2022 .— نسخة طبق الأصل/مرآة لموقع FastCGI المعطل
    • مارك ر. براون (29 أبريل 1996). "مواصفات FastCGI" . إصدار الوثيقة 1.0. شركة أوبن ماركت . تاريخ الاسترجاع 1 مايو 2022 .
  • "FastCGI" . مؤرشف من الأصل بتاريخ 20-03-2016.— الصفحة الرئيسية القديمة لـ FastCGI، كما كانت تظهر أثناء العمل
  • التطبيقات