PHP لدى EGPHP
كل ما نبنيه يبدأ بلغة PHP.
يكتب فريقنا PHP ويشغّلها منذ خمسة وعشرين عامًا، أي منذ PHP 4. والخوادم ولوحة التحكم والمواقع التي نرعاها كلها تبدأ من هنا.
خمسة وعشرون عامًا، إصدارًا بعد إصدار
لم نعرف هذه الإصدارات من القراءة عنها، بل رقّينا مواقع حقيقية عبر كلٍّ منها، وكل سطر أدناه تغييرٌ اضطررنا إلى التعامل معه على خادم يعمل فعليًا.
-
PHP 4 2000
الجلسات وتخزين المخرجات مؤقتًا، ضمن اللغة
وصل Zend Engine، فصارت الجلسات وتخزين المخرجات مؤقتًا جزءًا من اللغة بدلًا من إضافات خارجية. وعليه كُتب جيل كامل من المواقع الديناميكية الأولى.
Zend Enginesession_start()ob_start()
ماذا عنى لناهنا بدأ فريقنا: مواقع مكتوبة يدويًا على خوادم مشتركة، وما زال register_globals مفعّلًا.
-
PHP 5.0 2004
نموذج كائنات حقيقي
جاء Zend Engine 2 بأصناف ذات مستويات وصول، وبالواجهات والاستثناءات، وبكائنات تُمرَّر بمقبضها بدلًا من نسخها، وبامتدادَي MySQLi وSimpleXML.
privateinterfacetry / catchmysqli
ماذا عنى لناصار بالإمكان تنظيم الشيفرة في أصناف يتشاركها الفريق، وحصلت قاعدة البيانات على مشغّل حديث.
-
PHP 5.3 2009
مساحات الأسماء والدوال المغلقة
مساحات الأسماء والدوال المجهولة والربط الساكن المتأخر: الأساس الذي بُني عليه لاحقًا Composer ومنظومة الحزم المشتركة.
namespacefunction () use ()static::
ماذا عنى لناأخيرًا صار بإمكان مكتبات من مؤلفين مختلفين أن تتعايش في مشروع واحد دون أن تتصادم أسماؤها.
-
PHP 5.4 2012
السمات والمصفوفات المختصرة وحملة تنظيف عطّل الشيفرة القديمة
السمات، وصيغة المصفوفات المختصرة []، وخادم تطوير مدمج، بينما أُزيلت register_globals والاقتباسات السحرية (magic quotes) والوضع الآمن (safe mode) نهائيًا.
trait[ ]php -S
ماذا عنى لناتوقفت المواقع القديمة المعتمدة على register_globals عن العمل، وصارت ترقيتها تعني إصلاحها أولًا.
-
PHP 5.5 2013
OPcache مدمج في PHP
صار OPcache يأتي مع PHP نفسها ويحفظ السكربتات المترجمة في الذاكرة، إلى جانب المولّدات والدالة password_hash().
opcacheyieldpassword_hash()
ماذا عنى لناشيفرة مترجمة تبقى في الذاكرة بدلًا من إعادة قراءتها مع كل طلب. وما زال أول إعداد نفحصه على أي خادم PHP.
-
PHP 6 لم يصدر قط
الإصدار الذي لم يصدر قط
خُطط لإصدار PHP 6 حول دعم أصيل لسلاسل Unicode النصية، ثم جرى التخلي عنه. وحمل الإصدار التالي الرقم 7 حتى لا يُخلط بينه وبين الكتب والخطط التي كُتبت للإصدار 6.
-
PHP 7.0 2015
قفزة السرعة عطّل الشيفرة القديمة
محرك أُعيد بناؤه، وصفه مشروع PHP بأنه أسرع بما يصل إلى الضعف من 5.6 مع استهلاك أقل للذاكرة، إضافةً إلى تصريحات الأنواع البسيطة وأنواع القيم المُرجعة، والعاملَين ?? و <=>.
int $id: string??<=>
ماذا عنى لناأُزيلت دوال mysql_* القديمة، وكان ذلك سببًا متكررًا لتعطّل المواقع القديمة عند هذه الترقية.
-
PHP 7.4 2019
الخصائص محددة النوع والتحميل المسبق
الخصائص محددة النوع، والدوال السهمية، والعامل ??=، والتحميل المسبق في OPcache، وFFI.
public int $idfn ($x) =>??=
ماذا عنى لناآخر إصدارات 7.x، والإصدار الذي بقيت عليه تطبيقات قديمة كثيرة أطول مدة، ولهذا ما زلنا ننقل مواقع منه.
-
PHP 8.0 2020
JIT والواصفات والوسائط المسمّاة عطّل الشيفرة القديمة
مترجم JIT، والواصفات، والوسائط المسمّاة، وأنواع الاتحاد، وتعبير match، وعامل الأمان من القيم الفارغة ?->، وترقية خصائص المُنشئ.
#[Attribute]match?->JIT
ماذا عنى لناتحوّلت تحذيرات كثيرة إلى أخطاء، وتغيّرت المقارنة بين النصوص والأرقام، فقد تتوقف على 8.0 شيفرةٌ كانت تعمل بهدوء على 7.4.
-
PHP 8.1 2021
التعدادات والقراءة فقط والألياف
تعدادات أصيلة، وخصائص للقراءة فقط، والألياف (fibers)، ونوع الإرجاع never، وصيغة الاستدعاءات من الدرجة الأولى.
enumreadonlyFibernever
ماذا عنى لنافتحت الألياف الطريق أمام مكتبات PHP غير المتزامنة، دون تغيير طريقة تنفيذ الطلب العادي.
-
PHP 8.2 2022
أصناف للقراءة فقط، وتحذير للشيفرة القديمة
أصناف للقراءة فقط، وأنواع DNF، والقيم true وfalse وnull أنواعًا مستقلة، وامتداد Random جديد.
readonly class(A&B)|nullRandom\Randomizer
ماذا عنى لناأُعلن إهمال الخصائص الديناميكية، فملأت الإضافات القديمة السجلات بالتنبيهات حتى حُدّثت.
-
PHP 8.3 2023
الثوابت محددة النوع والواصفة #[\Override]
ثوابت أصناف محددة النوع، والواصفة #[\Override]، والدالة json_validate()، وجلب ثوابت الأصناف ديناميكيًا.
const string#[\Override]json_validate()
ماذا عنى لناإصدار أهدأ، ما يجعله خطوة سهلة للمواقع التي تعمل على 8.2 أصلًا.
-
PHP 8.4 2024
خطافات الخصائص
خطافات الخصائص، ومستويات وصول غير متماثلة، والكائنات الكسولة، ومحلّل DOM يفهم HTML5، وكتابة new MyClass()->method() دون الأقواس الإضافية.
get { }public private(set)Dom\HTMLDocument
ماذا عنى لنادوال القراءة والتعيين التي كانت تحتاج كلٌّ منها إلى دالة مستقلة صارت جزءًا من الخاصية نفسها، فتقلّ الشيفرة التي تحتاج إلى صيانة.
-
PHP 8.5 2025
عامل الأنبوب الحالي
عامل الأنبوب |>، وامتداد URI مدمج، وclone with، والواصفة #[\NoDiscard]، والدالتان array_first() وarray_last()، وتتبّع الاستدعاءات عند الأخطاء الفادحة.
|>Uri\Rfc3986\Uriclone($o, [ ])
ماذا عنى لناسلسلة الإصدارات الحالية، وعليها نبدأ المواقع الجديدة حين تدعمها شيفرتها.
السنوات هي سنوات الإصدار الأول لكل نسخة، كما وردت في سجل الإصدارات الخاص بمشروع PHP نفسه.
تتبّع طلبًا واحدًا عبر طبقات المنظومة
تمرّ الصفحة على موقع PHP بخمس طبقات في طريقها إلى الداخل، ثم تعود صاعدةً عبر الطبقات الخمس نفسها في طريقها إلى الخارج. نحن نرعى كل واحدة منها، ولكلٍّ منها صفحتها الخاصة.
-
الزائر
يطلب المتصفح صفحة عبر HTTPS. وتحدد الشهادة والجدار الناري والقواعد الموضوعة أمام الخادم ما إذا كان الطلب سيُسمح له بالدخول أصلًا.
-
خادم الويب
يستقبل Nginx أو LiteSpeed الاتصال، ويقدّم الصور والملفات بنفسه، ولا يمرّر إلى المجمّع الذي خلفه إلا عمل PHP.
-
بيئة تشغيل PHP
مجمّعات PHP-FPM، مجمّع لكل موقع، كلٌّ منها على إصدار PHP الذي تحتاجه شيفرته، مع OPcache ساخن وعمليات محسوبة على حجم الزيارات.
-
شيفرتك
يحوّل إطار عمل أو منصة جاهزة الطلب إلى صفحة: تطبيق Laravel الخاص بك، أو WordPress وMagento وMoodle وغيرها.
-
البيانات
يحفظ MySQL أو MariaDB السجلات، ويُبقي Redis في الذاكرة ما يُطلب مرة بعد مرة.
الخادم نفسه
خوادمنا نحن، يديرها الفريق نفسه، وفوقها لوحة التحكم الخاصة بنا.
الانتقال إلى PHP أحدث دون صباح عصيب
لكل موقع مجمّعه الخاص، فيستطيع خادم واحد تشغيل عدة إصدارات من PHP جنبًا إلى جنب، وينتقل كل موقع حين تجهز شيفرته، لا حين يجهز الخادم.
نحصر ما يعمل عليه كل موقع
إصدار PHP الخاص به، وامتداداته، والإضافات أو الحزم التي تعيقه.
نسخة تجرّب الإصدار الجديد
يُنسخ الموقع ويُشغَّل على إصدار PHP التالي، ويُقرأ سجل أخطائه سطرًا سطرًا.
نصلح ما يتعطّل
تُصلَح أو تُستبدل الدوال المُزالة، والاستدعاءات المُهمَلة، والإضافات التي لا تحديث لها.
موقعًا بعد موقع
ينتقل كل موقع إلى مجمّعه الجديد وحده، ويمكن إعادته فورًا إن فات شيء.
| الموقع | PHP | المجمّع | الحالة |
|---|---|---|---|
| shop.example.com | 8.4 | fpm-shop | مباشر |
| blog.example.com | 8.3 | fpm-blog | مباشر |
| crm.example.com | 7.4 → 8.3 | fpm-crm | على نسخة |
| learn.example.com | 8.3 | fpm-learn | مباشر |

أحضر لنا مشروعك على PHP
موقع قديم يحتاج إلى PHP أحدث، أو منصة تريد تثبيتها، أو خادم يشغّل ذلك كله. نسعّر كل مهمة بعد محادثة قصيرة.