أطلقت PHPChina مؤخرًا موضوعًا خاصًا حول تقنية غرف الدردشة PHP، وقد كنت أعمل في هذا المشروع مؤخرًا، لذا أود أن أعبر عن آرائي الشخصية هنا.
الوظائف الرئيسية لغرفة الدردشة:
1. التسجيل، تسجيل الدخول، تسجيل الخروج، تعديل المعلومات.
2. يتقدم المستخدم بطلب لإنشاء غرفة دردشة وتخصيص سمات غرفة الدردشة.
3. عرض اسم غرفة الدردشة والوصف والمشرف والإعلانات والإعلانات.
4. عرض قائمة المستخدمين عبر الإنترنت في الوقت الفعلي، ويمكنك عرض معلومات المستخدم عبر الإنترنت (الاسم المستعار، البريد الإلكتروني، IP، الوقت عبر الإنترنت، وما إلى ذلك).
5. نشر محتوى الدردشة وسمات الخط والإجراءات والتعبيرات والعبارات الشائعة.
6. يسمح بالاختفاء والدردشة الخاصة والتمرير وحظر المستخدم ومسح الشاشة واختيار مشهد الدردشة وموسيقى الخلفية وتخصيص طريقة الإرسال.
7. يحق للمسؤولين إدارة الأعضاء (طردهم ومنعهم من التحدث ونقل حقوق الإدارة).
أشياء يجب ملاحظتها:
1. يُحظر استخدام بنية الإطار (لا يجلب iframe أي فوائد باستثناء تقليل عبء العمل لديك)
2. يتم فصل رمز الواجهة الأمامية والخلفية تمامًا، ويتم نقل البيانات فقط من خلال قناة ajax، ويجب إرسال البيانات الضرورية فقط. (عرض البيانات في المقدمة ومعالجة البيانات في الخلفية)
3. يُمنع تحديث الصفحة بأكملها بسبب البرنامج، ويُمنع فقط تحديث المحتوى الذي يحتاج إلى تغيير (يُمنع استخدام الرأس والميتا لتحديث الصفحة).
4. عند إرسال محتوى الدردشة، لا يمكنك متابعة سرعة تجربة المستخدم بشكل أعمى وتجاهل أمر إرسال سجل الدردشة الفعلي. (وهذا يعني أنه يجب إعادة تنظيم سجلات الدردشة المقدمة بالترتيب الفعلي على الخادم ثم نقلها إلى العميل، لأن العديد من الأشخاص قد يرسلون المعلومات في نفس الوقت)
التقنيات المستخدمة:
1. الجسر بين الواجهة الأمامية والخلفية-AJAX. يمكنك اختيار مسج، XAJAX. أفضّل jquery، فهو سريع وبسيط ومتين ويحتوي على العديد من المكونات الإضافية ويتم تحديثه بسرعة.
2. نموذج حامل البيانات-XML. في الواقع، بيانات غرفة الدردشة العامة ليست معقدة للغاية، وJson كافية.
3. طبقة تجريد قاعدة البيانات-ADODB. إنه أسرع في استخدام PDO. أنا معتاد بالفعل على استخدام ADODB.
4. وسيلة تخزين البيانات الأساسية - MySQL. ليس هناك شك في هذا.
5. ذاكرة تخزين وسيطة للبيانات. قم بتخزين بيانات القراءة والكتابة عالية السرعة في الذاكرة المشتركة memcache لتقليل الحمل على قاعدة البيانات.
6. إذا كنت ترغب في تنفيذ الفيديو والصوت، فأنت بحاجة إلى دعم خادم FMS (خادم وسائط الفلاش)، ويحتاج العميل إلى تثبيت مشغل الفلاش. ويتضمن تفاعل البيانات بين html وjavascript وflash والخلفية. ليس هناك الكثير من المعلومات حول هذا.
هذه هي التقنيات الأساسية في تطوير التطبيقات الفعلية، ولا تزال هناك العديد من المشكلات التفصيلية التي تحتاج إلى حل.
على سبيل المثال: كيفية التعامل مع تحديثات القوائم عبر الإنترنت؟
هناك طريقتان:
1. قم بتحديث القائمة بأكملها (سواء كانت هناك تحديثات أم لا).
2. إضافة أعضاء جدد متصلين، وحذف الأعضاء غير المتصلين، وتغيير الأعضاء الذين تغيرت معلوماتهم.
ومن الواضح أن الخيار الثاني هو الخيار الأفضل.
كيفية التعامل مع مشكلات التزامن XmlHttpRequest؟
JavaScript عبارة عن خيط واحد. إذا كان هناك كائنان XmlHttpRequest في نفس الوقت، فمن الممكن أن تحدث مشاكل بسهولة، الأمر الذي يتطلب منا التحكم في إنشاء XmlHttpRequest وإنهائه.
في غرفة الدردشة، تتضمن البيانات التي نحتاج إلى تحديثها بشكل أساسي: القائمة عبر الإنترنت (بما في ذلك تحديثات معلومات الأعضاء)، وسجلات الدردشة، وسمات غرفة الدردشة، وما إلى ذلك. تكرار هذه التحديثات غير متناسق (إذا كانت الأوقات متسقة، فستحتاج فقط إلى إنشاء XmlHttpRequest للتعامل معها). يستغرق تحديث سجل الدردشة فترة زمنية أقصر، ويمكن أن يستغرق تحديث القوائم عبر الإنترنت وقتًا أطول قليلاً. بدون استخدام إطار عمل، إذا قمت بإنشاء كائنات XmlHttpRequest بشكل منفصل، فمن المحتمل أن تحدث مشكلات في التزامن. وهذا يتطلب إنشاء وظيفة التحكم في الوقت والعملية.
setInterval('process_control()',3000) // يتم الاتصال به مرة واحدة كل ثلاث ثوانٍ
تقوم وظيفة التحكم في العملية بتنفيذ جدولة المهام، مثل تنفيذ المهام في فترة زمنية معينة وتنفيذ المهمة التالية فقط بعد اكتمال المهمة.