يساعد خادم الويب خفيف الوزن C++ ضمن Linux المبتدئين على ممارسة برمجة الشبكة بسرعة وبناء الخادم الخاص بهم.
很多童鞋通过本项目入门了,但是对于一些东西还是属于知其然不知其所以然的状态,需要加强下基础知识的学习
. يوصى بقراءتها بعناية .ملخص | إطار | تجريبي | اختبار الإجهاد | تغيير السجل | تحميل كود المصدر | اركض بسرعة | عملية شخصية | كوك دينغ جي نيو | تنفيذ CPP11 | شكر وتقدير |
---|
- ج/ج++
- نموذج ب/س
- فئة غلاف آلية تزامن الخيط
- فئة معالجة طلب اتصال http
- تجمع الخيوط شبه المتزامن / شبه المفاعل
- مؤقت للتعامل مع الاتصالات غير النشطة
- نظام التسجيل المتزامن/غير المتزامن
- تجمع اتصال قاعدة البيانات
- تسجيل الموضوع المتزامن والتحقق من تسجيل الدخول
- اختبار ضغط الخادم البسيط
- قم بالتسجيل للحصول على العرض التوضيحي
- عرض تسجيل الدخول
- طلب عرض ملف الصورة (6M)
- طلب عرض ملف فيديو (39M)
بعد إغلاق السجل، استخدم Webbench لإجراء اختبار التحمل على الخادم. استخدم الوضعين ET وLT للاستماع وconnfd على التوالي. يمكن لكل منهما تحقيق عشرات الآلاف من الاتصالات المتزامنة، وفيما يلي نتائج الاختبار بعد الجمع بين الاثنين.
- برواكتور، إل تي + إل تي، 93251 كيو بي إس
- برواكتور، LT + ET، 97459 QPS
- برواكتور، إي تي + إل تي، 80498 كيو بي إس
- برواكتور، إت + إت، 92167 كيو بي إس
- مفاعل، LT + ET، 69175 QPS
- إجمالي عدد الاتصالات المتزامنة: 10500
- وقت الوصول إلى الخادم: 5 ثواني
- جميع عمليات الوصول كانت ناجحة
ملاحظة: عند استخدام webbench الخاص بهذا المشروع لاختبار التحمل، إذا ظهرت رسالة خطأ مفادها أنه لا يمكن العثور على أمر webbench، فاحذف ملف webbench القابل للتنفيذ وأعد ترجمته.
lock.h
واستخدم آلية المزامنة بشكل موحد يوجد حاليًا إصداران. هناك تغييرات كبيرة في بنية التعليمات البرمجية بين الإصدارات، كما أن الوثائق وأساليب تشغيل التعليمات البرمجية غير متناسقة أيضًا. النسخة المُعاد تصنيعها أكثر إيجازًا، والنسخة الأصلية (raw_version) أكبر، وتحتفظ بالنكهة الأصلية لرمز Youshuang، ومن الأسهل البدء بالإصدار الأصلي.
إذا واجهت فشلًا في تنزيل كود github، أو كان الوصول بطيئًا جدًا، فيمكنك تنزيله من الرابط التالي ومزامنته مع أحدث إرسال Github.
بيئة اختبار الخادم
بيئة اختبار المتصفح
تأكد من تثبيت قاعدة بيانات MySQL قبل الاختبار
// 建立yourdb库
create database yourdb;
// 创建user表
USE yourdb;
CREATE TABLE user (
username char ( 50 ) NULL,
passwd char( 50 ) NULL
)ENGINE=InnoDB;
// 添加数据
INSERT INTO user (username, passwd) VALUES( ' name ' , ' passwd ' );
قم بتعديل معلومات تهيئة قاعدة البيانات في main.cpp
//数据库登录名,密码,库名
string user = " root " ;
string passwd = " root " ;
string databasename = " yourdb " ;
يبني
sh ./build.sh
بدء الخادم
./server
جانب المتصفح
ip: 9006
./server [-p port] [-l LOGWrite] [-m TRIGMode] [-o OPT_LINGER] [-s sql_num] [-t thread_num] [-c close_log] [-a actor_model]
تذكير لطيف: المعلمات المذكورة أعلاه ليست ضرورية، ولا تحتاج إلى استخدامها جميعًا، يمكنك اختيارها وفقًا لحالتك الشخصية.
اختبار الأمثلة على الأوامر والمعاني
./server -p 9007 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1
تكرار الإصدار الأخير أسرع، والمحتوى التالي يعتمد في الغالب على كود الإصدار القديم (raw_version) للحصول على شرح مفصل.
تطبيق CPP11 أبسط وأكثر أناقة: خادم الويب
برمجة خادم Linux عالية الأداء، كتبها يو شوانغ.
شكرًا للأصدقاء التاليين على العلاقات العامة والمساعدة: @RownH، @mapleFU، @ZWiley، @zjuHong، @mamil، @byfate، @MaJun827، @BBLiu-coder، @smoky96، @yfBong، @liuwuyao، @Huixxi، @markparticle ، @ blogg9ggg.