فى البدايه عندما بدأت فى عالم ال frameworks لم استخدم اى framework ولكن بدأت افهم الغرض (الرئيسى) لها عموما
بعدها قمت بعمل PHP Pharaoh ثم تغيرت وانشأت Horus Framework وحتى الان موجوده وفى تطور مستمر
عندما بدأت nodejs يتحول اليها العالم بشده مره واحده خصوصا مجتمعنا العربى
وجدت عندها البعض يقارن بينها وبين python وبين php وبالطبع المقارانات خاطئه من الاساس
لان فى python يوجد tornado لذا فكان من الافضل المقارنه بينها وبين tornado وليست لغه بالكامل !
اما عن php المطورون يتحدثون عنها كانها فى التسعينات ولا يعرفون ما وصلت اليه من مستوى
لكن للاسف التعامل معها مجرد تعامل مع قشور php فعندما تقارن بين nodejs وبين php التى تستخدمها تحت apache فانت تقارن مقارنه خاطئه
لان فى nodejs انت تتعامل مع ال client مباشره بدون اى وسيط اما عن php تحت apache فأنت تتعامل مع mod_php وليست php بالكامل
وكل من تعرف على بنية apache وكيفية عمل mod_php سيعلم انها فى هذا الزمن اصبحت كالجحيم والا لكان تم الاعتماد عليها فى كبرى المواقع
ذلك لان apache يقوم بفتح thread جديده لكل اتصال .. تخيل ان هناك مليون اتصال .. ؟
لذلك ظهرت php fastcgi .. لكن سألت لما لا يوجد مثل nodejs فى php
وطبعا الاجابه ع الويب كله واضحه واجابه روتينيه محفوظه يتم ترديدها فقط
لا تخلوا لغه من العيوب ولكنها ليست كلها مشاكل ! فالمشكله فى كيف تستخدمها انت وليست كيف يستخدمها غيرك !
طبعا المشاكل المعروفه هى
- non-blocking & asynchronous
لكن المشكله انه مافيش مشكله لان الحلول موجوده "ببحث بسيط"
كل المطلوب هو عمل main loop يتحكم فى كل مايحدث
وهو مابدأت به بعد فهم كيفية عمل nodejs و tornado
وبالفعل بدأته وانهيته لأول مره وجربته وكانت النتائج جيده ..
وبعد فتره بعد ان اردت ان اقوم ببعض التحسينات اضفت الدعم لمكتبة libevent
مكتبه خاصه بنظام التشغيل ولها extension ل php
واصبح النظام الخاص بنا Plus يعتمد عليها "اذا كانت متاحه"
اما اذا كانت غير متاحه فهناك implementation مشابه لفكرة عملها يتم استخدامه وايضا النتائج جيده جدا
بعد نشر اول اصدار منها كان هناك الدهشه ومن شهر الاسئله التى سألت بها
هل يعمل بدون apache
هل هى non-blocking
هل هى single thread
هذا لانها تعتبر شئ غير اعتيادى فى اللغه فانت تعودت على انها مجرد سكربت يعمل تحت بيئه اخرى
ولكنك لم تجرب ان تشغل عقلك
الان هى فى الاصدار ال 1.0.1 بعد ان تم اضافة HTTPD وهى مكتبه خاصه بالتعامل مع HTTP وهى اختصار HTTP Daemon
ومن الخطوات القادمه (دمج Horus Framework العاديه مع Horus Plus)
لكى يكون الناتج Framework ايضا فى ملف واحد منظم جدا يعمل اما مستقل بذاته كـــ Nodejs + ExpressJs أو يعمل بالطريقه التقليديه
تحت اى Webserver عادى كــ apache وغيره
- التوثيق من هنا:
- اما ال Repo من هنا:
التعليقات