تم إصدار PHP 7.4 ، الإصدار الثانوي التالي من PHP 7 ، للتوافر العام اعتبارًا من 28 نوفمبر 2019. لذا فقد حان الوقت للغوص في بعض الإضافات الأكثر إثارة والميزات الجديدة التي ستجعل PHP أسرع وأكثر موثوقية.
يتوفر PHP 7.4 (إصدار رسمي) لجميع عملاء Kinsta في لوحة معلومات MyKinsta . 🤘
حتى لو عزز PHP 7.4 الأداء بشكل كبير وحسّن قابلية قراءة الكود ، فإن PHP 8 سيكون المعلم الحقيقي لأداء PHP ، حيث تمت الموافقة بالفعل على اقتراح تضمين JIT .
على أي حال ، نحن نمر اليوم ببعض الميزات والتغييرات الأكثر إثارة للاهتمام التي نتوقعها مع PHP 7.4. للتسجيل فقط ، كانت هذه هي التواريخ المهمة للإصدار 7.4:
6 يونيو 2019: PHP 7.4 Alpha 1
18 يوليو 2019: PHP 7.4 Beta 1 – ميزة التجميد
28 نوفمبر 2019: إصدار PHP 7.4 GA
يمكنك الاطلاع على القائمة الكاملة للميزات والإضافات على صفحة RFC الرسمية .
ما الجديد في PHP مع PHP 7.4؟
في هذا المنشور ، نغطي العديد من التغييرات والميزات التي يجب إضافتها إلى اللغة مع الإصدار الأخير من PHP 7.4:
نسيت array_merge: PHP 7.4 يجلب عامل الانتشار في تعبير الصفيف
وظائف السهم 2.0 (عمليات الإغلاق القصيرة)
عامل التوحيد الفارغ
الخصائص المكتوبة 2.0
مراجع ضعيفة
إرجاع المتغير والمعلمات المتباينة
التحميل المسبق
آلية تسلسل الكائنات المخصصة الجديدة
الإستنكار
نسيت array_merge: PHP 7.4 يجلب عامل الانتشار في تعبير الصفيف
متاح منذ PHP 5.6 ، تفريغ الوسيطات هو بناء جملة لتفريغ المصفوفات و Traversables في قوائم الوسيطات. لفك حزمة أو مصفوفة يمكن اجتيازها ، يجب أن يتم تقديمها مسبقًا بواسطة … (3 نقاط) ، كما هو موضح في المثال التالي:
function test(...$args) { var_dump($args); }
test(1, 2, 3);
الآن هذا PHP 7.4 RFC يقترح تمديد هذه الميزة لتعريفات مجموعة:
$arr = [...$args];
أول فائدة مُعلنة لعامل الانتشار في تعبير المصفوفة تتعلق بالأداء. في الواقع ، ينص مستند RFC على ما يلي :
يجب أن يكون أداء عامل الانتشار أفضل من array_merge. هذا ليس فقط لأن عامل الانتشار عبارة عن بنية لغة بينما array_mergeهي وظيفة ، ولكن أيضًا لأن تحسين وقت التجميع يمكن أن يكون فعالاً للمصفوفات الثابتة.
من المزايا المهمة لمشغل Spread أنه يدعم أي كائنات يمكن اجتيازها ، بينما array_mergeتدعم الوظيفة المصفوفات فقط.
فيما يلي مثال على تفريغ الحجة في تعبير المصفوفة:
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
إذا قمت بتشغيل هذا الكود باستخدام PHP 7.3 أو إصدار أقدم ، فإن PHP ستعرض خطأ تحليل:
Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
بدلاً من ذلك ، سيعيد PHP 7.4 مصفوفة:
array(5) {
[0]=>
string(6) "banana"
[1]=>
string(6) "orange"
[2]=>
string(5) "apple"
[3]=>
string(4) "pear"
[4]=>
string(10) "watermelon"
}
ينص RFC على أنه يمكننا توسيع نفس المصفوفة عدة مرات. علاوة على ذلك ، يمكننا استخدام صيغة عامل الانتشار في كل مكان في المصفوفة ، حيث يمكن إضافة العناصر العادية قبل أو بعد عامل الانتشار. لذا فإن الكود التالي سيعمل كما قد نتوقع:
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [...$arr1, ...$arr2];
$arr4 = [...$arr1, ...$arr3, 7, 8, 9];
من الممكن أيضًا فك حزم المصفوفات التي تعيدها الدالة مباشرةً إلى مصفوفة جديدة:
function buildArray(){
return ['red', 'green', 'blue'];
}
$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
ينتج PHP 7.4 المصفوفة التالية:
array(6) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
[2]=>
string(4) "blue"
[3]=>
string(4) "pink"
[4]=>
string(6) "violet"
[5]=>
string(6) "yellow"
}
يمكننا أيضًا استخدام صيغة المولد :
function generator() {
for ($i = 3; $i <= 5; $i++) {
yield $i;
}
}
$arr1 = [0, 1, 2, ...generator()];
لكن لا يُسمح لنا بفك حزم المصفوفات التي تم تمريرها عن طريق المرجع. ضع في اعتبارك المثال التالي:
$arr1 = ['red', 'green', 'blue'];
$arr2 = [...&$arr1];
إذا حاولنا فك مصفوفة بالرجوع إليها ، فإن PHP ستلقي بخطأ التحليل التالي:
Parse error: syntax error, unexpected '&' in /app/spread-operator.php on line 3
على أي حال ، إذا تم تخزين عناصر المصفوفة الأولى بالرجوع إليها ، فسيتم تخزينها بالمرجع في المصفوفة الثانية أيضًا. هنا مثال:
$arr0 = 'red';
$arr1 = [&$arr0, 'green', 'blue'];
$arr2 = ['white', ...$arr1, 'black'];
وهذا ما نحصل عليه مع PHP 7.4:
array(5) {
[0]=>
string(5) "white"
[1]=>
<strong>&string(3) "red"</strong>
[2]=>
string(5) "green"
[3]=>
string(4) "blue"
[4]=>
string(5) "black"
}
تم تمرير اقتراح مشغل الانتشار بأغلبية 43 صوتًا مقابل 1.
وظائف السهم 2.0 (عمليات الإغلاق القصيرة)
في PHP ، تعتبر الدوال المجهولة مطولة ويصعب تنفيذها وصيانتها. يقترح RFC هذا إدخال صيغة أقصر وأوضح لوظائف السهم (أو الإغلاق القصير) ، والتي من شأنها أن تسمح لنا بتنظيف كود PHP الخاص بنا بشكل كبير.
ضع في اعتبارك المثال التالي:
function cube($n){
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
يسمح PHP 7.4 باستخدام صيغة أكثر إيجازًا ، ويمكن إعادة كتابة الوظيفة أعلاه على النحو التالي:
$a = [1, 2, 3, 4, 5];
$b = array_map(fn($n) => $n * $n * $n, $a);
print_r($b);
حاليًا ، يمكن للوظائف المجهولة (عمليات الإغلاق) أن ترث المتغيرات المحددة في النطاق الأصلي بفضل useبنية اللغة ، كما هو موضح أدناه:
$factor = 10;
$calc = function($num) use($factor){
return $num * $factor;
};
ولكن مع PHP 7.4 ، فإن المتغيرات المحددة في النطاق الأصلي يتم التقاطها ضمنيًا بالقيمة (ربط النطاق بالقيمة الضمنية). لذلك يمكننا كتابة الوظيفة الكاملة الموضحة أعلاه في سطر واحد:
$factor = 10;
$calc = fn($num) => $num * $factor;
يمكن استخدام المتغير المحدد في النطاق الأصلي في وظيفة السهم تمامًا كما لو كنا نستخدمه ، ولا يمكن تعديل متغير من النطاق الأصلي.use($var)
تعد البنية الجديدة تحسينًا كبيرًا للغة لأنها تتيح لنا إنشاء كود أكثر قابلية للقراءة وصيانتها. يمكننا أيضًا استخدام أنواع المعلمات والإرجاع ، والقيم الافتراضية ، وقوائم الوسائط متغيرة الطول ( وظائف متغيرة ) ، ويمكننا تمريرها وإرجاعها بالمرجع ، وما إلى ذلك. وأخيرًا ، يمكن أيضًا استخدام الإغلاق القصير في طرق الفصل ، ويمكنهم الاستفادة من و $thisمتغير تماما مثل إغلاق العادية.
تمت الموافقة على طلب التعليقات هذا بأغلبية 51 إلى 8 أصوات ، لذلك يمكننا أن نتوقع أن يكون جزءًا من إضافات PHP 7.4.
عامل التوحيد الفارغ
مضافًا إلى PHP 7 ، يكون عامل الاندماج ( ??) مفيدًا عندما نحتاج إلى استخدام عامل ثلاثي مع isset(). تقوم بإرجاع المعامل الأول إذا كان موجودًا ولم يكن كذلك NULL. خلاف ذلك ، تقوم بإرجاع المعامل الثاني. هنا مثال:
$username = $_GET['user'] ?? ‘nobody';
ما يفعله هذا الرمز واضح ومباشر: فهو يجلب معلمة الطلب ويعين قيمة افتراضية إذا لم تكن موجودة . معنى هذا الخط واضح ، ولكن ماذا لو كان لدينا أسماء متغيرة أطول بكثير كما في هذا المثال من RFC؟
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
على المدى الطويل ، قد يكون من الصعب بعض الشيء الحفاظ على هذا الرمز. لذلك ، بهدف مساعدة المطورين على كتابة كود أكثر سهولة ، يقترح RFC هذا إدخال عامل التوحيد الصفري ( ??=). فبدلاً من كتابة الكود السابق يمكننا كتابة ما يلي:
$this->request->data['comments']['user_id'] ??= ‘value’;
إذا كانت قيمة المعلمة اليسرى هي null، فسيتم استخدام قيمة المعلمة اليمنى.
لاحظ أنه في حين أن عامل الاندماج هو عامل مقارنة ، إلا ??=أنه عامل إسناد.
تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟
انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!
إشترك الآن
تمت الموافقة على هذا الاقتراح بأغلبية 37 مقابل 4 أصوات.
الخصائص المكتوبة 2.0
تسمح إعلانات نوع الوسيطة ، أو تلميحات الكتابة ، بتحديد نوع المتغير المتوقع أن يتم تمريره إلى دالة أو أسلوب فئة. تعد تلميحات الكتابة ميزة متاحة منذ PHP 5 ، ومنذ PHP 7.2 يمكننا استخدامها مع objectنوع البيانات. الآن PHP 7.4 يقدم تلميح الكتابة خطوة إلى الأمام عن طريق إضافة دعم لإعلانات نوع خاصية من الدرجة الأولى . هذا مثال أساسي للغاية:
class User {
public int $id;
public string $name;
}
جميع الأنواع مدعومة ، باستثناء voidو callable:
public int $scalarType;
protected ClassName $classType;
private ?ClassName $nullableClassType;
وRFC يفسر السبب voidو callableغير معتمدة:
نوع الفراغ غير مدعوم ، لأنه غير مفيد وله دلالات غير واضحة.
النوع القابل للاستدعاء غير مدعوم ، لأن سلوكه يعتمد على السياق.
حتى نتمكن من استخدام بأمان bool، int، float، string، array، object، iterable، self، parent، أي فئة أو اسم واجهة، و قيم الفارغة أنواع ( ?type).
يمكن استخدام الأنواع في الخصائص الثابتة:
public static iterable $staticProp;
يُسمح لهم أيضًا varبالتدوين:
var bool $flag;
من الممكن تعيين قيم الخاصية الافتراضية ، والتي يجب أن تتطابق بالطبع مع نوع الخاصية المُعلنة ، ولكن الخصائص القابلة للقيم فقط هي التي يمكن أن يكون لها nullقيمة افتراضية :
public string $str = "foo";
public ?string $nullableStr = null;
ينطبق النوع نفسه على جميع الخصائص في إعلان واحد:
public float $x, $y;
ماذا يحدث إذا قمنا بخطأ في نوع الملكية؟ ضع في اعتبارك الكود التالي:
class User {
public int $id;
public string $name;
}
$user = new User;
$user->id = 10;
$user->name = [];
في الكود أعلاه ، أعلنا عن نوع خاصية سلسلة ، لكننا عيّننا مصفوفة كقيمة خاصية. في مثل هذا السيناريو ، نحصل على الخطأ الفادح التالي:
Fatal error: Uncaught TypeError: Typed property User::$name must be string, array used in /app/types.php:9
تمت الموافقة على طلب التعليقات هذا بأغلبية 70 صوتًا إلى 1.
قم بترحيل مواقع وورد بريس الخاصة بك بسهولة إلى PHP 7.4 في لوحة معلومات MyKinsta. جرب Kinsta مجانًا .
مراجع ضعيفة
باستخدام RFC هذا ، يقدم PHP 7.4 فئة WeakReference ، والتي تسمح للمبرمجين بالاحتفاظ بمرجع إلى كائن لا يمنع تدمير الكائن نفسه.
حاليًا ، تدعم PHP المراجع الضعيفة باستخدام امتداد مثل pecl-slowref. على أي حال ، تختلف واجهة برمجة التطبيقات الجديدة عن WeakRefالفئة الموثقة .
هنا مثال من المؤلف لهذا الاقتراح، نيكيتا بوبوف:
$object = new stdClass;
$weakRef = WeakReference::create($object);
var_dump($weakRef->get());
unset($object);
var_dump($weakRef->get());
var_dumpيطبع الأول ، بينما يطبع الثاني ، حيث تم إتلاف الكائن المشار إليه.object(stdClass)#1 (0) {}var_dumpNULL
تم تمرير هذا RFC بأغلبية 28 إلى 5 أصوات.
إرجاع المتغير والمعلمات المتباينة
التباين هو خاصية للتسلسلات الهرمية للفئات التي تصف كيفية تأثير أنواع مُنشئ النوع على الأنواع الفرعية . بشكل عام ، يمكن أن يكون مُنشئ النوع:
ثابت : إذا كان نوع النوع الأعلى يقيد نوع النوع الفرعي.
المتغير المشترك : إذا تم الاحتفاظ بترتيب الأنواع (يتم ترتيب الأنواع من الأكثر تحديدًا إلى الأكثر عمومية).
المتغير : إذا عكس الترتيب (يتم ترتيب الأنواع من أكثر عامة إلى أكثر تحديدًا).
حاليًا ، تحتوي PHP في الغالب على معلمات وأنواع إرجاع ثابتة ، مع استثناءات قليلة. يقترح RFC هذا السماح بالتغاير والتباين في أنواع المعلمات وأنواع الإرجاع ، كما يوفر العديد من الأمثلة على الكود.
فيما يلي مثال على نوع الإرجاع المتغير :
interface Factory {
function make(): object;
}
class UserFactory implements Factory {
function make(): User;
}
وهنا مثال على نوع المعامل المتعارض :
interface Concatable {
function concat(Iterator $input);
}
class Collection implements Concatable {
// accepts all iterables, not just Iterator
function concat(iterable $input) {/* . . . */}
}
راجع RFC لإلقاء نظرة فاحصة على التباين والتباين في PHP 7.4.
تم تمرير هذا RFC بأغلبية 39 صوتًا مقابل 1.
التحميل المسبق
هذا الاقتراح من ديمتري ستوجوف هو أحد العروض المفضلة لدينا لأنه يجب أن يجلب دفعة كبيرة في الأداء. التحميل المسبق هو عملية تحميل المكتبات والأطر في OPCache عند تهيئة الوحدة (اقرأ المزيد عن دورة حياة PHP ).
دورة حياة PHP
دورة حياة PHP (مصدر الصورة: PHP Internals )
إليك كيفية عمل التحميل المسبق بكلمات ديمتري:
عند بدء تشغيل الخادم – قبل تشغيل أي رمز تطبيق – يجوز لنا تحميل مجموعة معينة من ملفات PHP في الذاكرة – وجعل محتوياتها “متاحة بشكل دائم” لجميع الطلبات اللاحقة التي سيقدمها هذا الخادم. ستكون جميع الوظائف والفئات المحددة في هذه الملفات متاحة للطلبات خارج الصندوق ، تمامًا مثل الكيانات الداخلية.
يتم تحميل هذه الملفات عند بدء تشغيل الخادم ، ويتم تنفيذها قبل أي تطبيق وتبقى متاحة لأي طلبات مستقبلية. هذا رائع من حيث الأداء.
يتم التحكم تحميلها مسبقا من قبل محددة php.iniالتوجيه: opcache.preload. يحدد هذا التوجيه نص PHP ليتم تجميعه وتنفيذه عند بدء تشغيل الخادم. يمكن استخدام هذا الملف لتحميل ملفات إضافية مسبقًا ، إما بما في ذلك أو عبر opcache_compile_file()الوظيفة (اقرأ المزيد عن وثائق PHP ).
لكن هناك جانب سلبي. في الواقع ، ينص RFC صراحةً على ما يلي:
تظل الملفات المحملة مسبقًا مخزنة مؤقتًا في ذاكرة opcache إلى الأبد. لن يكون لتعديل ملفات المصدر المطابقة لها أي تأثير بدون إعادة تشغيل خادم آخر.
ومع ذلك ، سيتم تحميل جميع الوظائف المحددة في الملفات مسبقة التحميل بشكل دائم في وظيفة PHP وجداول الفئات ، وستظل متاحة لكل طلب في المستقبل. سيؤدي ذلك إلى تحسينات جيدة في الأداء ، حتى لو كانت هذه التحسينات متغيرة بشكل كبير.
يمكنك قراءة المزيد حول قيود واستثناءات التحميل المسبق على صفحة RFC الرسمية للتحميل المسبق .
آلية تسلسل الكائنات المخصصة الجديدة
هذا اقتراح آخر من نيكيتا بوبوف تمت الموافقة عليه بأغلبية كبيرة من الأصوات.
حاليًا ، لدينا آليتان مختلفتان للتسلسل المخصص للكائنات في PHP:
و __sleep()و __wakeup()طرق سحرية
و Serializableاجهة
وفقًا لنيكيتا ، كلا الخيارين بهما مشكلات تؤدي إلى كود معقد وغير موثوق به. يمكنك التعمق في هذا الموضوع في RFC . هنا أنا فقط أذكر أن آلية التسلسل الجديدة يجب منع هذه القضايا من خلال توفير طريقتين السحر جديدة، __serialize()و __unserialize()، التي تجمع بين الآليات القائمة اثنين.
تم تمرير هذا الاقتراح بأغلبية 20 إلى 7 أصوات.
الإستنكار
سيتم إهمال الوظائف / الوظائف التالية مع PHP 7.4. للحصول على قائمة أكثر شمولاً بالإهمالات ، راجع ملاحظات ترقية PHP 7.4 .
قم بتغيير أسبقية عامل التشغيل التسلسلي
حاليًا ، في PHP ، عامل التشغيل الحسابي “+” و “-” و “.” عامل تشغيل السلسلة يتم تركه ترابطيًا وله نفس الأولوية (اقرأ المزيد عن أسبقية المشغل ).
كمثال ، ضع في اعتبارك السطر التالي:
echo "sum: " . $a + $b;
في PHP 7.3 يصدر هذا الكود التحذير التالي:
Warning: A non-numeric value encountered in /app/types.php on line 4
هذا لأنه يتم تقييم التسلسل من اليسار إلى اليمين. إنها نفس كتابة الكود التالي:
echo ("sum: " . $a) + $b;
يقترح RFC هذا تغيير أسبقية المشغلين ، بإعطاء “.” أسبقية أقل من عاملي “+” و “-” ، بحيث يتم إجراء عمليات الجمع والطرح دائمًا قبل سلسلة السلسلة. يجب أن يكون هذا السطر من التعليمات البرمجية معادلاً لما يلي:
echo "sum: " . ($a + $b);
هذا اقتراح من خطوتين:
بدءًا من الإصدار 7.4 ، يجب أن ترسل PHP إشعارًا بإيقاف التشغيل عند مواجهة تعبير غير محاط بعلامات “+” و “-” و “.”.
يجب إضافة التغيير الفعلي في أسبقية هذه العوامل مع PHP 8 .
تمت الموافقة على كلا الاقتراحين بأغلبية كبيرة من الأصوات.
استنفد عامل التشغيل الثلاثي الأيسر الترابطي
في PHP ، يكون العامل الثلاثي – على عكس العديد من اللغات الأخرى – ترابطيًا لليسار. وفقًا لنيكيتا بوبوف ، قد يكون هذا مربكًا للمبرمجين الذين يتنقلون بين لغات مختلفة.
حاليًا ، في PHP الشفرة التالية صحيحة:
$b = $a == 1 ? 'one' : $a == 2 ? 'two' : $a == 3 ? 'three' : 'other';
يتم تفسيره على أنه:
$b = (($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : 'other';
وقد يؤدي هذا إلى حدوث أخطاء لأنه قد لا يكون ما نعتزم القيام به. لذلك يقترح RFC هذا إهمال وإزالة استخدام الارتباط الأيسر للمشغلين الثلاثي وإجبار المطورين على استخدام الأقواس.
هذا اقتراح آخر من خطوتين:
بدءًا من PHP 7.4 ، ستؤدي الأشكال الثلاثية المتداخلة بدون استخدام صريح للأقواس إلى تحذير من الإهمال.
بدءًا من PHP 8.0 ، سيكون هناك خطأ في وقت تشغيل التحويل البرمجي.
تمت الموافقة على هذا الاقتراح بأغلبية 35 إلى 10 أصوات.
ماذا تعني PHP 7.4 لمستخدمي وورد بريس؟
PHP هي لغة البرمجة الأكثر استخدامًا من جانب الخادم على الويب. وفقًا لـ W3Techs ، اعتبارًا من 2 ديسمبر 2019 ، يتم استخدام PHP بواسطة 78.9٪ من جميع مواقع الويب التي يمكنهم اكتشاف لغة البرمجة من جانب الخادم.
أداء PHP 7
التحقق من إصدار PHP الخاص بك
التحديث إلى PHP 7.4
تثبيت وتشغيل PHP 7.4 على Docker
استخدام PHP (ديسمبر 2019)
استخدام PHP (ديسمبر 2019)
لسوء الحظ ، لا تزال PHP 5 مستخدمة من قبل 44.0٪ من جميع مواقع الويب التي تحتوي على لغة برمجة معروفة من جانب الخادم. إذا أضفت عدد المستخدمين الذين ما زالوا يستخدمون PHP 7.0 و 7.1 ، فقد اتضح أن الغالبية العظمى من مواقع الويب تشغل إصدارات غير مدعومة من PHP.
إصدارات PHP المدعومة لـ وورد بريس
إصدارات PHP المدعومة (مصدر الصورة: الإصدارات المدعومة )
وفقًا لصفحة إحصائيات وورد بريس الرسمية ، اعتبارًا من كتابة هذا ، فإن 64 ٪ من جميع مواقع وورد بريس تعمل بإصدارات غير مدعومة من PHP. فقط ما يزيد قليلاً عن 13٪ يستخدمون PHP 7.3 . وأحدث إصدار PHP 7.4 لم يظهر بعد. يمكنك أن ترى أن الغالبية العظمى من المستخدمين ، أكثر من 23٪ ، ما زالوا يعملون على PHP 5.6.
إحصائيات إصدار ووردبريس PHP
إحصائيات إصدار ووردبريس PHP
نوصي بشدة بمطالبة مضيفك بإصدار مدعوم من PHP ، ويفضل أن يكون ذلك وفقًا لمتطلبات وورد بريس الرسمية . حتى كتابة هذه السطور ، مايو 2019 ، يتطلب وورد بريس:
إصدار PHP 7.3 أو أحدث.
الإصدار 5.6 من MySQL أو إصدار أحدث أو إصدار MariaDB 10.1 أو إصدار أحدث.
دعم HTTPS
أداء PHP 7
الأرقام المذكورة أعلاه غير مشجعة بشكل خاص من وجهة نظر الأداء ، حيث أظهر PHP 7 أنه أسرع بشكل ملحوظ. فيما يلي بعض الإحصائيات:
تُظهر معايير PHP الرسمية أن PHP 7 تسمح للنظام بتنفيذ ضعف عدد الطلبات في الثانية مقارنةً بـ PHP 5.6 ، في نصف وقت الاستجابة تقريبًا.
نشر Christian Vigh أيضًا مقارنة أداء PHP وجد فيها أن PHP 5.2 كان أبطأ بنسبة 400٪ من PHP 7.
شهد Andrei Avram أوقات تنفيذ أسرع واستخدامًا أقل للذاكرة في PHP 7.4 مقابل PHP 7.3
أجرى Phoronix بعض الاختبارات المعيارية المبكرة باستخدام PHP 7.4 Alpha ولاحظ أنه كان أسرع قليلاً من PHP 7.3.
قمنا بتشغيل معايير أداء PHP الخاصة بنا باستخدام PHP 7.3. لقد رأينا أن وورد بريس 5.0 على PHP 7.3 يمكنه تنفيذ ما يقرب من ثلاثة أضعاف عدد المعاملات (الطلبات) في الثانية مقارنة بـ PHP 5.6. سنقوم بإصدار PHP 7.4 المعياري قريبًا!
معايير وورد بريس 5.0 PHP
معايير وورد بريس 5.0 PHP
معيار وورد بريس 5.0 PHP 5.6: 91.64 req / sec
نتائج اختبار وورد بريس 5.0 PHP 7.0 المعيارية: 206.71 req / sec
نتائج اختبار وورد بريس 5.0 PHP 7.1 المعيارية: 210.98 req / sec
نتائج اختبار وورد بريس 5.0 PHP 7.2 المعيارية: 229.18 req / sec
نتائج اختبار وورد بريس 5.0 PHP 7.3: 253.20 req / sec 🏆
كثير منها بطيء في التحديث لمجرد الوقت الذي يستغرقه اختبار جميع المكونات الإضافية والسمات الجديدة التابعة لجهات خارجية للتأكد من أنها تعمل بشكل صحيح. لكن في كثير من الأحيان ، يعود الأمر إلى أنهم ببساطة لم يفعلوا ذلك بعد.
التحقق من إصدار PHP الخاص بك
ألست متأكدًا من إصدار PHP الذي تقوم بتشغيله؟ تتمثل إحدى أسهل طرق التحقق في استخدام أداة مثل Pingdom أو Google Chrome Devtools. سيُظهر لك رأس طلب HTTP الأول عادةً الإصدار.
تحقق من إصدار PHP في Pingdom
تحقق من إصدار PHP في Pingdom
هذا يعتمد على المضيف الذي لا يعدل X-Powered-Byقيمة الرأس. ومع ذلك ، يفعل الكثيرون ذلك لأسباب أمنية (بما في ذلك Kinsta). إذا كان الأمر كذلك ، فقد لا ترى إصدار PHP الخاص بك. في هذه الحالة ، إذا كنت تقوم بتشغيل وورد بريس 5.2 أو إصدار أعلى ، فهناك أداة Site Health جديدة يمكنك استخدامها. توجه إلى “أدوات” ← “صحة الموقع” ← “معلومات” وضمن قسم “الخادم” ستجد إصدار PHP لخادمك.
تحقق من إصدار PHP باستخدام أداة وورد بريس Site Health
تحقق من إصدار PHP باستخدام أداة وورد بريس Site Health
بدلاً من ذلك ، يمكنك تثبيت مكون إضافي مجاني مثل Version Info والذي سيعرض لك بعض معلومات الخادم الأساسية في تذييل لوحة تحكم مسؤول وورد بريس. تتضمن بعض الطرق الأخرى لمعرفة إصدار PHP تحميل ملف عبر FTP ، أو ببساطة التواصل مع مضيفك والسؤال.
التحديث إلى PHP 7.4
الإصدار الأخير من PHP 7.4 متاح الآن في Kinsta. بدلاً من ذلك ، يمكنك اختبار موقع وورد بريس الخاص بك محليًا أو التحقق من البرامج النصية الخاصة بك في بيئة مثل Docker ، والتي تتيح لك اختبار إصدارات مختلفة من PHP من سطر الأوامر.
أسهل طريقة لبدء الاختبار هي إنشاء بيئة مرحلية لأن هذا سيشبه موقع الإنتاج المباشر الخاص بك. في لوحة معلومات MyKinsta ، انقر فوق موقعك وقم بتغيير البيئة إلى مرحلة.
إنشاء بيئة مرحلية لـ وورد بريس
إنشاء بيئة مرحلية لـ وورد بريس
ثم ضمن قائمة “الأدوات” ، قم بتغيير محرك PHP الخاص بك إلى PHP 7.4. يمكنك بعد ذلك بدء الاختبار للتأكد من توافق التعليمات البرمجية الخاصة بك والمكونات الإضافية والسمات الخاصة بك.
كما هو الحال مع الإصدارات السابقة من PHP ، تدعم ميزة PHP ذاتية الإصلاح الخاصة بنا PHP 7.4 بشكل كامل. إذا تعطل PHP لأي سبب من الأسباب ، فسنقوم بإعادة تشغيله تلقائيًا. إذا لم تؤد إعادة التشغيل إلى حل المشكلة ، فسيقوم نظام المراقبة لدينا بتنبيه فريق مسؤول النظام لدينا للتحقيق في سبب المشكلة.
الأهمية
على الرغم من أن هذا إصدار ثابت ، ما زلنا نشجع الجميع بشدة على اختبار PHP 7.4 قبل استخدامه على موقعك المباشر .
التغيير إلى PHP 7.4
التغيير إلى PHP 7.4
راجع التفاصيل المتعلقة بإصدار PHP 7.4 في Kinsta .
تثبيت وتشغيل PHP 7.4 على Docker
هل تريد الاختبار على Docker؟ لحسن الحظ ، لا تحتاج إلى ترجمة وتهيئة PHP 7.4 يدويًا. إذا كان لديك Docker مثبتًا بالفعل على نظامك ، فأنت تحتاج فقط إلى تثبيت PHP-FPM 7.4 Docker Image غير الرسمية وتشغيل اختباراتك من سطر الأوامر في ثوانٍ قليلة.
تثبيت Nginx Docker Image
تثبيت Nginx Docker Image
إذا كنت تفضل تشغيل كود PHP 7.4 في متصفحك ، فأنت بحاجة أيضًا إلى تثبيت صورة Nginx أو Apache . لكن لا تقلق. فقط اتبع تعليمات المطور . انسخ والصق الأوامر من صفحة Docker Image إلى أداة سطر الأوامر ، وستكون جاهزًا للانطلاق.
PHP 7.4 هو أحدث إصدار ثانوي يجعل PHP أسرع وأكثر موثوقية. تحقق من الغوص العميق في الميزات الجديدة!
انقر للتغريد
ملخص
في هذا المنشور ، قمنا بتغطية عدد كبير من التغييرات والإضافات التي يمكن أن نتوقعها مع إصدار PHP 7.4. إذا كنت تبحث عن القائمة الكاملة للميزات ، جنبًا إلى جنب مع وثائق RFC الرسمية ، فراجع الموارد التالية:
PHP 7.4 طلبات التعليقات
ملاحظات ترقية PHP 7.4
مهام تحضير PHP 7.4
سنبقيك على اطلاع دائم بأحدث المعلومات المتعلقة بـ PHP 7.4. إذا كنت أحد عملاء Kinsta ، فيمكنك بالفعل البدء في نقل مواقع وورد بريس الخاصة بك إلى أحدث إصدار.
هل أنت جاهز لتثبيت واختبار ميزات PHP القادمة ؟ أي واحد هو المفضل لديك؟ شاركنا أفكارك في التعليقات أدناه.
وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:
مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.
تكامل Cloudflare Enterprise.
يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.
التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.
كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.