السلام عليكم و رحمة الله وبركاته.

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


إن أي مبرمج يبحث عن أي لغة تكون الأسرع في تنفيذ البرامج بغض النظر عن سهولة هذا اللغة من صعوبتها و من أهم هذه اللغة c ,php , cgi , fastcgi , perl , mod_python وغيرها و من خلال الاختبارات التي تمت على هذا اللغات و جد ان لغة php من أفضل هذه اللغات و التي تتفوق مع اقرب لغة لها وهي fastcgi بالعديد من الثواني مع ملفات نصية صغيرة و تخيل الفرق مع ملفات أكبر , ولكن قد نلاحظ ان لغة fastcgi تتفوق على لغة البي اتش بي في برامج مستخدمة و السبب في ذلك هو المبرمج الذي يتجاهل العديد من الأمور الهامة و هي على النحو التالي :


1- تجاهل تحليل للملفات او الشفرات بداخلها بعد تنفيذها :


الغرض من ذلك هو توفير استعلام أفضل او أمر أفضل .


عند كتابة شفرة في ملف يجب عليك ان تقيس سرعة إخراج النتائج و تغيير الشفرة للحصول على أفضل أداء .


2-الاستخدام الخطأ للتوابع :


وهذا الموضوع يحتاج وقت كبير للتفصيل وراح اختصر قد الامكان و نعلم ما توفرة هذه اللغة من توابع عديد و لكن متى نستخدمها و ايهما أفضل :



استخدم أفضل الطرق لإخراج البيانات .


توجد ثلاث طرق لإخراج البيانات إلى المستعرض و هي :

-إخراج مباشر .
-التابع echo
-التابع print

استخدم الإخراج المباشر قدر المكان فهو الأسرع بلا شك أيضا حاول تقليل استخدام التابع echo او print بأقل شكل ممكن .


مثال :

كود:
		 			 <? 
echo “مجموعة hvips العربية  " ; 
echo “ تهتم في تطوير المواقع العربية   " ; 
?>

تلاحظ استخدام التابع echo مرتين الأفضل و الأسرع هو مرة واحدة فقط


كود PHP:
                      <? 
echo “مجموعة hvips العربية  تهتم في تطوير المواقع العربية   "; 
?>

استخدم أفضل الطرق لاستدعاء البيانات .

هناك ثلاث طرق لاستدعاء البيانات وهي

الأمر readfile ( )


كود PHP:
                      readfile ("اسم الملف"); 
يستخدم اذا كان الملف لا يحتوي على شفرة او استعلام او استدعاء لملف اخر بمعني ملف html .


كود PHP:
                      include (" اسم الملف "); 
الأمر include( ) .

امر include هو أمر استدعاء ملف خارجي لكن في حالة عدم وجود الملف سوف يعرض رسالة خطأ و سوف يتم أكمال باقي الأوامر في الصفحة .


الأمر require( ) .

يعمل نفس عمل الأمر السابق يقوم باستدعاء ملف خارجي أيضا لكن في حالة عدم وجود الملف سوف يعرض خطأ في الصفحة و سوف تتوقف الصفحة و لا يتم عرض محتوى الصفحة التي يتوفر بها هذا الأمر .

الأمر include_once( ) .

يعمل نفس عمل الأمر include( ) حيث يقوم بنفس عمل include ولكن الفرق الوحيد إذا كنت أدرجت الملف إثناء تنفيذ البرنامج وقمت بطلبه مرة أخرى فلن يتم إدراجه.


الأمر require_once( )

يعمل نفس عمل الأمر include_once( ) مع الأمر include( ) .


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



تخزين و ضغط البيانات :


لتخزين او تكديس الذاكرة و إخراج هذا التخزين و أهم توابعة .


التابع

كود PHP:
                      ob_start(); 
وفي العادة يتم وضعة في أول الملف من أجل تخزين للذاكرة طبعا يساعد ذلك في تسريع عرض الصفحة .

يستمر التابع

كود PHP:
                      ob_start(); 
في تخزين الذاكرة حتى تستخدم التابع الأخر لإغلاق التخزين وليس من الضروري استخدامه وهو التابع :


كود PHP:
                      ob_end_flush(); 

عند استخدامك لهذه الطريقة قد لا تلاحظ فرق في زيارات الصفحة للمرة الاولى ولكن عند تمرير التباع :



كود PHP:
                      ob_gzhandler( ) 
وهو استدعاء رجعي للذاكرة , و بهذه الطريقة مررنا التابع


كود PHP:
                      ob_gzhandler( ) 
للتابع الأول و فائدة الأخير هي إخراج البيانات و بلا شك يفضل استخدام ذلك في جميع برامج خاص ان إصدار php أصبح أحدث من الإصدار 4.0.5 القديم الذي كان يواجهة العديد من المشاكل مع هذا ضياع الذاكرة مع التابع


كود PHP:
                      ob_gzhandler( ) 


تلاحظ تحسن في فتح الصفحة بنسبة 60 % و سرعة كبيرة جدا كما هو موجود في المنتديات و العديد من البرامج .


تعتبر الطريقة من أفضل الطرق في تحقيق الأداء الامثل لملفات php .


وهي تخزين مؤقت للذاكرة و إخراج هذا التخزين بشكل مضغوط ...


هناك توابع أخرى تعمل عمل السابقة و راح اكتفي بما ذكرت و الأخرى تتيح بعض الخيارات الغير ضرورية .


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



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


بلا شك عند عمل قاعدة بيانات ان أنواع البيانات له تأثير كبير جدا على سرعة إخراج البيانات وسوف اشرح اكتفي بأهم الطرق لتوفير سرعة في إخراج البيانات بما انك تعرف أنواع هذا البيانات :



التعرف على أهم أنواع الأعمدة التي نستخدمها


الأرقام

TINYINT
يخزن رقم صحيح من الصفر إلى 255

SMALLINT

أرقام صحيحة صغيرة

INT

أرقام صحيحة اعتيادية

BIGINT

أرقام صحيحة كبيرة جدا

FLOAT

أرقام صحيحة وجزئية ( عشرية ) ويمكن تحديد عرضة وعدد المنازل العشرية
مثال FLOAT 4,2 الأرقم بين قوسين
الرقم أربعة يعتبر عرض الخانات اي يصل الى 9999 والرقم 2 الارقام العشرية
ويصبح اعلى رقم ممكن ان نصل الية 9999,99
_ _ _

التاريخ والوقت

DATE
التاريخ على الصورة yyyy-mm-dd
yyyy السنة
mm الشهر
dd اليوم

TIME

الوقت على الصورة hh:mm:ss
hh الساعة
mm الدقيقة
ss الثانية

DATETIME

تاريخ ووقت على الصورة yyyy-mm-ddhh:mm:ss


VARCHAR

نص قصير بطول متغير ولن ياخذ إلا نفس عدد الاحرف بالاضافة الى بايت واحد فقط
( أفضل من CHAR في توفير الحجم لكن CHAR اسرع )

TINYTEXT

لتخزين النصوص ذات الإحجام الصغيرة جدا

TEXT

لتخزين النصوص الأطول ذات الحجم العادي

MEDIUMTEXT

متوسط الحجم

LONGTEXT

طويلة الحجم


TINYBLOB

لتخزين بيانات ثنائية تستطيع ان تخزن في هذا النوع الصور والملفات مثل ملف
مضغوط او ملف صوتي ...

BLOB

حجم عادي

MEDIUMBLOB

متوسط الحجم

LONGBLOB

كبيرا جدا


ألان تعرفة على أهم هذه الأنواع لتحقيق أفضل أداء توفر التالي :


لا تجعل تصريح أي عمود NULL قد الامكان فذلك يجعل كل شيء اسرع ويوفر بت واحد لكل عمود .
نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

حاول تقليل هذه الأنواع من الأعمدة قد الامكان LONGBLOB و BLOB و VARCHAR و MEDIUMTEXT و TEXT و MEDIUMBLOB عند تخزين بيانات بها تعطيك حجم كبير جدا من البيانات و لو أخذنا مثال على أنواع أخرى

TINYINT يخزن 1 بايت

و INT يخزن 4 بايت

فاستخدام TINYINT أفضل من INT لقلة حجم البيانات .



حاول أن يكون مفتاح الجدول الأساسي صغير جدا فذلك يسرع في عرض البيانات .


حاول ان تعمل فهرسة لأهم الأعمدة التي يتم البحث بها كما هو موجود في منتديات
VB وغيرها لتسريع عرض النتائج فالفهرسة توفر لك وقت مع جدول يستغرق البحث به 2 دقيقة إلى 4 ثواني فقط .


حاول تحرير الذاكر في نهاية أي استعلام تقوم به .


باستخدام

كود PHP:
                      mysql_free_result($sql); 

فذلك يقلل من الضغط على قواعد البيانات .