شوّيت: شبكة كرة قدم اجتماعية




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الوسوم:

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو مميز
#1  
درس (1) : كيف يتم تنفيذ تعليمة السكول وما هي دورة حياتها

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

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

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

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

هذه البنود لا يوجد نظام DBMS في العالم قد وفرها كاملة بنسبة 100%
إلا أني وحسب ما سمعت من دكتور كانت رسالة الدكتراة له في الداتا بيز
قال لي أن أكثر من حقق تلك البنود كانت شركة أوراكل

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


============================================
ثانياً : معلومات عامة عن الحاسوب

يتكون الحاسوب من لوحة أم تحوي جسرين
جسر شمالي يربط بين الذاكرة والمعالج

وجسر جنوبي يربط بين المعالج ومكونات الحاسب من كارت الشاشة وكروت ال pc وغيرها

يتعامل المعالج مع عدة أنظمة من المخزنات
أكثرهم بطئاً هو الهارد ديسك
وأكثر سرعة هي ذاكرة الكاش المخبئة الموجودة داخل المعالج

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

الهارديسك
الذاكرة ram
الذاكرة المخبئة

حتي الذاكرة المخبئة يم في كلاً من شركتي إنتل و amd تقسيمها لمرحتلين أو 3
L1.L2 في حالي amd وإنتل ما قبل ال core i7
تكون L1 أكثر سرعة بكثير من L2 ولكنها صغيرة جدا وتكون أعلي في تكلفة التصنيع
ثم L2 وهي الكاش ميمور اللي يعلن عنه واللي يحفظه الجميع لكل معالج ( 4 ميجا أو 8 إلخ )

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

حينما يكون هناك بيان سيتعامل معه المعالج وهو موجود علي الهارد ديسك ينقل المعالج بيئة التشغيل الخاصة به للذاكرة ويتعامل معه من خلال الذاكرة
فمثلاً لو فتحت الفوتوشوب فأنت بذلك تأخذ وقت في البداية هو وقت إقلاع الفوتوشوف وهو يحمل ملفاته التنفيذة للذاكرة
بعد ذلك يبدأ المعالج بالتعامل مع تلك الملفات التنفيذية المخزنة في الذاكرة

ولو تركته لفترة طويلة يقوم نظام التشغيل آليا بنقل تلك الملفات التنفيذية للذاكرة الإفتراضية علي الهارد ديسك والتي تسمي swap في اللينوكس وتكون موجود في لوحة whm في صفحة عرض ال load وغيره وتسمي في الويندوز page file موجود داخل ال c ويتم ذلك لتحرير الذاكرة لعمليات أخري تكثر أنت التعامل معها

حينما تذهب لعرض الفوتوشوب المفتوح لديك بعد تركه لفترة طويلة تجده أخذ زمن بطئ قبل أن يعود لسرعته وذلك لإعادة نظام التشغيل الملفات للذاكرة لبدء التعامل معه

طيب ما فائدة الكاش ميموري هنا ؟
حينما يكون هناك بيان سيتعامل معه المعالج بشكل اكبر بكثير مع عمليات الفلوتنج بوينت وغيرها ( تجد ذلك مثلا في محررات الفيديو وقت تحرير ملف أو في ضغط ملف او فك ضغطه إلخ )
يتم نقل البيانات للذاكرة الموجودة داخل المعالج وهي الأسرع من الذاكرة الخارجية
ويتم التعامل معها بعد تقسيمها لعدة مراحل
كل مرحلة يتم نقل أهم ما فيها من بيانات للذاكرة الأقرب L1 ثم إعادة الناتج وهكذا

معلومة أخيرة
انت حينما تفتح حاسوبك يتم تحميل البايوس الموجود علي اللوحة الأم والذي بدوره ينظر في البارتيشن ال active علي الهاردديسك ليري هل هناك نظام تشغيل أم لا ثم يحمل منه الكيرنل الخاص بالنظام للذاكرة وهو وقت إقلاع الويندوز أو اللينوكس بعدها يفتح النظام ويكون داخل الذاكرة هذا الكيرنل
============================================
ثالثاً : أنظمة الداتا بيز DBMS

ما الذي تقوم به ؟
يتم تحميل ال DBMS المشغل للداتا بيز مع إقلاع النظام ليكون مع الكيرنل في الذاكرة

حينما تكتب أن تعليمة سكول للغة البرمجة والتي هي في حالتنا php والتي تعمل علي الأباتشي

هناك مكتبة لل php خاص بالتعامل مع الماي سكول
تقوم ال php بطرق باب DBMS للمايسكول وتقول له أنا جالب لك تعليمة سكول لتطبقها لي

يأخذ ال DBMS التعليمة ثم يقوم بترجمتها interpreter يفهم منها أن المطلوب هو بيانات من الجدول كذا وكذا
يجهز المطلوب علي الهارديسك ثم يقوم بإرسال لنتائج للذاكرة ويخزنها في أي عدد من ال addresses داخل الذاكرة ثم يخزن في address منفصلة البيانات التالي

- تعليمة السكول التي تم تنفيذها
- أول مخزن للنتائج في الذاكرة
- أخر مخزن للنتائج في الذاكرة
مع معلومات أخري حول النتائج

ثم يعود لل php ويخبط عليها ويخبرها أنه نفذ المطلوب ويعطيها رقم فما هو هذا الرقم ؟
هو رقم الaddress المخزن فيه كل هذه البيانات

الأن تنتظر منك ال php أية عمليات تريدها
فلو قلت لها أريد عدد الأسطر ستذهب للذاكرة وتعدهم لك
ولو طلب الحيز الذي شغلته من الذاكرة ستذهب وتفعل
ولو طلبت جلب النتائج عبر لووب بأي من تلك الدوال الخاصة بذلك fetch تبدأ في عمل fetch للبيانات واحدة بواحدة

لو عملت free result يتم تفريغ كل محتوي هذه التعليمة من الداتا بيز

رابعاً : تطبيق عملي

لدينا جدول في قواعد البيانات أسمه options به 500 سطر من الخيارات الخاصة ببرمجيتنا

نفذنا التعليمة التالية

كود PHP:
$result mysql_query("SELECT * FROM `options`"); 
ماذا سيحدث ؟
سترسل التعليمة لنظام قواعد البيانات ويفهم منها أنه مطلوب كل حقول الجدول options فيتم نقلها بالكامل للذاكرة ثم في عنوان في الذاكرة تخزن بيانات التعليمة وأول عنوان للبيانات وأخر عنوان

هذا العنوان الموجود في الذاكرة والحامل لمعلومات الكويري ونتائجها هو ما يعود ويخزن في المتغير $result

ينتهي التنفيذ ويصبح لدينا في ها المتغير مكان البيانات في الذاكرة وأنتهي إتصالنا تماماً بالهارد ديسك

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

كود PHP:
while($myrow mysql_fetch_array($result))
{
    
$new_array $myrow;

ماذا سيحدث ؟
أنا أعطيت لل mysql_fetch_array وهو أمر fetch أي جلب من الذاكرة
أعطيتها رقم هو عنوان في الذاكرة يحوي بيانات تعليمة سكول أو بالأصح حقول وطلبت منها جلبها من الذاكرة علي هيئة مصفوفة مع تفريغها واحدة بواحدة

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

طيب ماذا حدث حينما حملت النتائج في مصفوفة ؟
قمت أن الأن بإعادت تخزين البيانات مرة أخري في الذاكرة ولكن هذه المرة تكون مخزنة بالإسم $new_array

الأن لو قمت بعمل

كود PHP:
mysql_freeresult($result); 
يتم تفريغ الذاكرة من نتائج التعليمة
ولكن يكون لدينا في مكان أخر وعبر ال php متغير بالإسم $new_array هو عبارة عن مصفوفة ومحتواه هو ما كنا نريده

مثال أخر
طيب لو لدينا جدولين

الأول
users
والثاني
usergroup

نفذنا تلك التعليمة

كود PHP:
$result mysql_query("
SELECT
    user.*, usergroup.*
    
FROM `user` AS user
LEFT JOIN `usergroup` AS usergroup
ON ( user.`groupid` = usergroup.`groupid` )
WHERE user.`userid` = 1"
); 
يتم علي الهاردديسك عمل جدول إفتراضي
يتم تحميل بيانات العضو رقم 1 من جدول user
ثم يتم ربط بيانات مجموعة الأعضاء رقم X بها فيتكون لدينا حقل جديد فيه بيانات العضو ومجموعته

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


سؤال : ماذا لو أمتلأت الذاكرة ؟
الجواب : يبدأ نقل البيانات للذاكرة الإحتياطية وهنا يمتلاً لديك ال swap وتجد موقعك شديد البطئ بسبب أن الهارد ديسك أبطأ بكثير من الذاكرة وهنا تنصحك الداتا سنتر بإضافة ذاكرة إضافية للسيرفر

طيب ما هي فكرة الكاش في البرمجة ؟
وكيف تحسن مستوي برمجيتك لتصبح أسرع وأقل إستهلاك لموارد السيرفر ؟

هذا في درسنا القادم بإذن الله مع أحدث طرق التعامل مع الكاش






محب الله ورسوله is offline   قديم 16-04-2009, 04:58 AM
الرد مع إقتباس
عضو نشيط
#2  

أحسنت أخي المجروح

في إتنظار الدرس القادم






__________________
اللهم وفقني لما تحبه وترضاه...
Mostafa Maher is offline   قديم 16-04-2009, 07:57 PM
الرد مع إقتباس
عضو سوبر نشيط
#3  

واصل اخي المجروح
موضوع مفيد جدا
يستحق التثبيت لمدة شهر :d






__________________
للتواصل: في اجازة
عبد الواحد البشيري is offline   قديم 17-04-2009, 12:16 AM
الرد مع إقتباس
عضو فعال
#4  

جزاك الله الف خيرا اخي الكريم

درس جدا مفيد جدا وان ان شاء الله متابع معاك الدروس

جزاك الله خيرا اخي الكريم






__________________
ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
لطلب البرمجة فقط
helal-egypt@hotmail.com
محمدهلال is offline   قديم 17-04-2009, 12:37 AM
الرد مع إقتباس
عضو سوبر نشيط
#5  

موضوع مميز و مفيد جدا

لكل مبرمج php

بارك الله فيك اخي المجروح






__________________
al-mtwer.com - المطور للبرمجة
ندع اعمالنا تتكلم !

jawwwad is offline   قديم 18-04-2009, 03:23 PM
الرد مع إقتباس
عضو نشيط جدا
#6  

درس ممتع شكرا لك






MOHAMED IDELSSE is offline   قديم 18-04-2009, 04:03 PM
الرد مع إقتباس
عضو نشيط جدا
#7  

ممتاز ... شكرا






dewan159 is offline   قديم 18-04-2009, 06:22 PM
الرد مع إقتباس
عضو فعال جدا
#8  

يعطيك العافيه حيبي
لي حوالي نص ابحث عن موضوعك هذا ومادريت انه مثبت

سؤالي:
هل هناك برنامج/طريقة لاجل "تكييش" التعليمة؟
بحثت عن هالشي ولقيت فيه تعديل على my.cnf يسمح لك بعمل هذا وقمت بتفعيله ولكن لازلت اعتقد ان هناك طرق افضل من هذا.
وايضا وجدت برنامج memcached ولم اقم بتجربته لاني اعتقد انه يحتاج الى تعديل على الاكواد وهذا يحتاج وقت كثير.






__________________
انا أريد وأنت تريد والله يفعل مايريد!
PHP Expert is offline   قديم 19-04-2009, 03:55 PM
الرد مع إقتباس
عضو سوبر نشيط
#9  

أخي المجروح .. لا ندري كيف نشكرك على هذه المعلومات الرائعة والمفيدة
ففهم المبرمج لهذه المعلومات أساس لتحسين برامجه وعمله
جزاك الله خيرا






__________________
قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير
مهندس مصرى is offline   قديم 20-04-2009, 04:43 AM
الرد مع إقتباس
عضو مميز
#10  

إقتباس:
المشاركة الأصلية بواسطة PHP Expert مشاهدة مشاركة
يعطيك العافيه حيبي
لي حوالي نص ابحث عن موضوعك هذا ومادريت انه مثبت

سؤالي:
هل هناك برنامج/طريقة لاجل "تكييش" التعليمة؟
بحثت عن هالشي ولقيت فيه تعديل على my.cnf يسمح لك بعمل هذا وقمت بتفعيله ولكن لازلت اعتقد ان هناك طرق افضل من هذا.
وايضا وجدت برنامج memcached ولم اقم بتجربته لاني اعتقد انه يحتاج الى تعديل على الاكواد وهذا يحتاج وقت كثير.
ال xcache هو نفسه الميم وهو نفسه أي مسرع ويقوم بنفس الأداء
مع بعض الزيادات في الميم ولكنها تحتاج لتدخل منك

سأشرح في درس قريب كيفية إستخدام الكاش كما يستخدمه أقوي المحترفين بإذن الله وتخزين كل ما تحب وإستدعاءه وتوفير ملايين تعليمات السكول شهرياً وتخفف الحمل

وما هي فكرة عمل المشاريع الكبيرة مثل رتب وغيرها وكيف تقوم بها برمجيات

ولكن أحتاج للوقت فقط






محب الله ورسوله is offline   قديم 21-04-2009, 04:14 AM
الرد مع إقتباس
مشرف سوالف عامة و خدمات البيع و الشراء و الاعلانات التجارية
#11  

بارك الله فيك ...






__________________
أخي [ محمد الفارس ] في كل رد اقول .. شكراً لك ...
البانر.نت .. نصنع من الافكار دليل
albanner is offline   قديم 29-04-2009, 08:16 PM
الرد مع إقتباس
عضو نشيط
#12  

جزاك الله خير على المعلومات القيمة






shoqi is offline   قديم 04-05-2009, 06:17 PM
الرد مع إقتباس
الرد على الموضوع


 

أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
درس عمل جسم يتم تحريكه بأزرار الكيبورد بالفلاشـ ? درس روعة و إحترافي جداً سطام سعد التصميم والرسومات والمونتاج 1 29-04-2007 02:12 PM
كيف يتم تنفيذ الامر التالي البترولي سوالف الاستضافة 3 30-07-2005 01:57 AM
كيف يتم حجز النطاقات السعودية ؟ وما ارخص شركة تقدم هذه الخدمه؟ ArabicTop سوالف الاستضافة 7 04-07-2005 01:15 PM
كيف يتم تنفيذ هذا الاستعلام . jadweb.com PHP 6 16-06-2005 07:26 PM
كيف يتم نقل درس مباشر على الموقع داعية الويب والويب 2.0 والـ Semantic Web 5 02-06-2005 03:54 AM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 01:26 PM.