से निपटने वाला PHP मैं एंटरप्राइज़ लेवल PHP एप्लिकेशन चला रहा हूं। यह एक ब्राउज़र गेम है जिसमें हजारों उपयोगकर्ता बुनियादी ढांचे पर ऑनलाइन हैं जो मेरे मालिक ने अपग्रेड करने से इनकार कर दिया है और मशीनरी हर समय 2-3 सिस्टम लोड (हाँ लिनक्स) पर चल रही है। किसी भी तरह यह असली मुद्दा नहीं है। असली मुद्दा यह है कि कुछ उपयोगकर्ता तब तक प्रतीक्षा करते हैं जब तक कि सर्वर लोड नहीं हो जाता (प्राइम टाइम) और वे अपने माउस क्लिकर्स लाते हैं और वे 10-20 बार की तरह सबमिट सबमिट बटन पर क्लिक करते हैं, जबकि सर्वर अभी भी 10-20 अनुरोध भेज रहा है प्रारंभिक अनुरोध का उत्पादन, इस प्रकार कैश और डेटाबेस को अद्यतन नहीं किया गया।PHP समवर्ती
वर्तमान में मेरे पास प्रत्येक अनुरोध पर एक आउटपुट वैरिएबल है, जो 2 मिनट के लिए मान्य है और मेरे पास "म्यूटेक्स" लॉक है जो मूल रूप से memcache के अंदर एक झंडा है जो अगर स्क्रिप्ट के निष्पादन को अवरुद्ध करता है, लेकिन माउस क्लिकर बनाता है एक ही समय में इतने सारे अनुरोध कि वे लगभग एक साथ चलते हैं जो मेरे लिए एक बड़ा मुद्दा है।
आप इस मुद्दे से निपटने वाले स्टैक ओवरव्लो लोगों के बहुमत कैसे हैं। मैं कुकी/सत्र को ध्वजांकित करने के बारे में सोच रहा था, लेकिन मुझे लगता है कि अगर सर्वर ओवरलोड हो जाता है तो मुझे एक ही समस्या में मिल जाएगा। अनुकूलन असंभव है, स्रोत 7 साल पुराना है और काफी अनुकूल है, अधिकांश पृष्ठों (कैश से चलने) पर कोई प्रश्न नहीं है और केवल कुछ उपयोगकर्ता इनपुट पर डेटाबेस से पूछताछ की जा रही है, जैसे कि मैं रोकने की कोशिश कर रहा हूं।
हाँ यह वास्तविक वस्तु के साथ प्रक्रियात्मक कोड है। मशीनें PHP 5 चलाती हैं लेकिन कोड स्वयं PHP 4 से अधिक है। मुझे पता है, मुझे पता है कि यह पुराना और सामान है, लेकिन हम इस पूरे गड़बड़ी को फिर से लिखने के संसाधन को छोड़ नहीं सकते हैं क्योंकि अधिकांश मूल डेवलपर्स ने यह जान लिया कि सामान कैसे अंतर्निहित है और हाँ, मैं मूल रूप से पुराने छेद पैच कर रहा हूँ। लेकिन जहां तक मुझे पता है कि यह लोड की गई PHP वेबसाइटों पर एक सामान्य मुद्दा है।
पीएस: सबमिट पर जावास्क्रिप्ट के साथ बटन को अक्षम करना एक विकल्प नहीं है। वास्तविक धोखेबाज उन्नत उपयोगकर्ता हैं। उनमें से एक ने एक बॉट क्लिकर लिखा था और इसे Google क्रोम एक्सटेंशन के रूप में पैक किया था। मत पूछो कि मैंने उससे कैसे निपटाया।
आपने इससे कैसे निपट लिया ..? :) –
मैं websockets का उपयोग करें। प्रक्रिया-प्रति-अनुरोध मॉडल इस तरह की चीज़ के लिए बहुत खराब फिट है। – rdlowrey
हां ठीक है एप्लिकेशन पुराना है और इसमें उस फैंसी एमवीसी/बिगपाइप/जेएसओएन/एचटीएमएल 5 इतिहास की बात नहीं है जो आधुनिक वेबसाइटों का उपयोग करती है। – Sk1ppeR