सबसे पहले मुझे यह कहना है कि यदि लक्ष्य एक हल्के HTTP सर्वर है जो PHP पृष्ठों की सेवा करता है, तो यह पहले से ही किया जा चुका है। nginx पर एक नज़र डालें।
एक सीखने के अनुभव के रूप में, आपने कुछ ऐसा चुना है जो वास्तव में काफी कठिन है।
मल्टीथ्रेडेड सबसे अच्छे समय पर कठिन है। सी/सी ++ पर (मैन्युअल मेमोरी आवंटन के साथ वास्तव में कुछ भी) यह परिमाण का एक क्रम कठिन है।
इसमें नेटवर्क संचार जोड़ा गया है। HTTP के विभिन्न संस्करणों (ज्यादातर अब एक गैर-समस्या) से निपटने के लिए quirks हैं, सभी प्रकार के HTTP शीर्षलेखों के साथ सौदा करने के लिए।
इस समस्या का सबसे सहज समाधान एक प्रक्रिया है जो एक बंदरगाह को सुनता है। जब इसे कोई अनुरोध प्राप्त होता है, तो यह एक प्रक्रिया उत्पन्न करता है, जो आवश्यक होने पर PHP प्रक्रिया में निष्पादित हो सकता है।
हालांकि यह स्केल नहीं करता है। पहला (स्पष्ट) अनुकूलन प्रक्रियाओं के बजाय थ्रेड का उपयोग करना और इंटरथ्रेड संचार के कुछ रूपों का उपयोग करना है। हालांकि यह मदद करता है, यह अभी भी केवल स्केल करेगा।
इससे आगे बढ़ें और आप एसिंक सॉकेट हैंडलिंग देख रहे हैं, जो काफी कम स्तर पर है।
हालांकि इनमें से सभी काफी बड़ी परियोजनाएं हैं।
क्या कोई विशेष कारण है कि आप इसे सी/सी ++ में कर रहे हैं? या किसी विशेष कारण से आप एक या दोनों भाषाओं को सीख रहे हैं? इन भाषाओं में निश्चित रूप से उनकी जगह है लेकिन वे तेजी से विशिष्ट भाषा बन रहे हैं। प्रबंधित (कचरा एकत्रित) भाषा/प्लेटफॉर्म लगभग पूरी तरह से ले लिया गया है। जोएल का तर्क है कि कचरा संग्रह पिछले 20 वर्षों में प्रोग्रामिंग में केवल बड़ी उत्पादकता में वृद्धि के बारे में है और मैं सहमत हूं।
मैंने 6 साल पहले विजुअल बेसिक में यह वही काम किया है (PHP समर्थन के बिना), लेकिन सभी Async सॉकेट सामग्री को माइक्रोसॉफ्ट के विंसॉक नियंत्रण के साथ पहले से ही ख्याल रखा गया था। इसके अलावा, यह विजुअल बेसिक था, इसलिए सी या सी ++ में अच्छा लिखना बहुत कठिन होगा। (मैं वास्तव में सी से चिपकना चाहता हूं और सी ++ पर जाने से पहले वास्तव में अच्छा लगा सकता हूं)। क्या एसिंक सॉकेट वास्तव में केवल एपीआई का उपयोग कर जटिल है? मुझे ईमानदारी से कोई विचार नहीं है क्योंकि मैं विजुअल बेसिक से आया हूं। : पी ** संपादित करें: ** nginx के लिंक के लिए धन्यवाद, कभी नहीं पता था कि यह अस्तित्व में था! (मैं अभी भी एक सीखने के अनुभव के रूप में खुद को लिखने की कोशिश करना चाहता हूं)। –
मैं पूरी तरह से लेने के बारे में इतना यकीन नहीं कर रहा हूँ। अपाचे, लाइटटैड, एनजिनक्स, चेरोकी ... सी में लिखे गए सभी सी। के लिए मॉलोक() प्रतिस्थापन एकत्र करने के लिए उपयुक्त कचरा भी हैं। मैं मानता हूं कि इसके ज्यादातर सिस्टम प्रोग्रामर जो आज सी का उपयोग करते हैं, लेकिन मुझे लगता है कि आला थोड़ा बड़ा है आप वर्णन करने से पहले। –
@ गुइटर सी और सी ++ विभिन्न प्रोग्रामिंग प्रतिमानों के साथ वास्तव में अलग-अलग भाषाएं हैं। किसी के साथ कौशल का मतलब नहीं है और न ही दूसरे के साथ जरूरी मदद करता है। – cletus