मैं एक चैट प्रोग्राम है जो अपाचे/पीएचपी Node.js करने से JSON डेटा धक्का मिल गया है में विभाजित सॉकेट संदेशों से Node.js रखने के लिए, TCP सॉकेट के माध्यम से:कैसे छोटे विखंडू
// Node.js (Javascript)
phpListener = net.createServer(function(stream)
{
stream.setEncoding("utf8");
stream.on("data", function(txt)
{
var json = JSON.parse(txt);
// do stuff with json
}
}
phpListener.listen("8887", 'localhost');
// Apache (PHP)
$sock = stream_socket_client("tcp://localhost:8887");
$written = fwrite($sock, $json_string);
fclose($sock);
समस्या है, यदि JSON स्ट्रिंग काफी बड़ी है (लगभग 8k से अधिक), आउटपुट संदेश एकाधिक हिस्सों में विभाजित हो जाता है, और JSON पार्सर विफल हो जाता है। PHP स्ट्रिंग की सही लंबाई के रूप में $ लिखित मान देता है, लेकिन डेटा इवेंट हैंडलर दो या उससे अधिक की आग लगता है।
क्या मुझे एक अलग घटना में फ़ंक्शन संलग्न करना चाहिए, या क्या घटना के आग में पाठ को कैश करने का कोई तरीका है, इस तरह से भारी भार के तहत दौड़ की स्थिति में कमी नहीं होगी? या कुछ अन्य समाधान मैंने सोचा नहीं है?
धन्यवाद!
समाधान अच्छा है लेकिन यह नोड.जेएस नहीं है जो विभाजन कर रहा है, यह या तो सर्वर पर ओएस या क्लाइंट पर ओएस या मॉडेम/राउटर या तो अंत में या आपके आईएसपी पर राउटर या एक राउटर है रास्ते में राउटर। यह सिर्फ इंटरनेट काम करता है। आप विखंडन को कम करने के लिए जंबो पैकेट का उपयोग करने के लिए क्लाइंट और सर्वर दोनों पर ओएस को कॉन्फ़िगर कर सकते हैं लेकिन आप गारंटी नहीं दे सकते कि नेटवर्क पैकेट को खंडित नहीं करेगा (बेशक, आप दोनों एक ही लैन पर हैं)। – slebetman
हाय, आप सही समय में हैं ओएस या सर्वर जो सामान को विभाजित करता है, लेकिन दस्तावेज पर नोट किया गया है, जैसा कि node.js प्रदर्शन के लिए इनपुट अनुरोधों को विभाजित करता है। मुझे उम्मीद है कि आईपीवी 6 के जंबो पैकेज हमें इससे बचने में मदद कर सकते हैं, लेकिन मेरा अनुमान यह है कि सर्वर प्रदर्शन कारणों से कम से कम (वेब पर कम से कम) –