मैं वर्तमान में कुछ व्यक्तिगत परीक्षणों और बेंचमार्क पर काम कर रहा हूं ताकि वास्तविक दुनिया उदाहरण डेटा के साथ मोंगोडीबी और माईएसक्यूएल का उपयोग करने के बीच वर्कफ़्लो और दक्षता की तुलना की जा सके।PHP में 12000 मोंगो डीबी उदाहरण खोलना और बंद करना
प्रत्येक डेटाबेस में अपना डेटा सेट करने के लिए मैं कई हज़ार लूप कर रहा हूं और डेटाबेस में डालने के लिए यादृच्छिक रूप से डेटा ऑब्जेक्ट्स बना रहा हूं।
हालांकि मुझे PHP में मोंगो क्लास का उपयोग करने में कुछ समस्याएं हैं जिन्हें मैं हल नहीं कर सकता। समस्या इस प्रकार है:
मेरे पास एक लूप है जो एक नया मोंगो इंस्टेंस और कनेक्शन बनाता है, संग्रह में एक छोटी सरणी डालता है और फिर कनेक्शन बंद कर देता है। यह पाश 20000 बार चलाना चाहिए। हालांकि यह 16300 वें लूप के आसपास हमेशा विफल रहता है (16200 के मिनट के साथ और अधिकतम 16350 मैं कुछ रनों के बाद कहूंगा) जब यह उदाहरण बनाने/कनेक्शन बनाने का प्रयास करता है।
पाश में कोड के नीचे है:
$data = get_random_user_data();
$mongo = new Mongo('mongodb://admin:[email protected]:27017/test');
if ($mongo->test->users->insert($data)) {
$users[] = array('id' => $data['_id'], 'name' => $data['username']);
echo $i." - Added user: ".$data['username'].'<br/>';
}
$mongo->close();
get_random_user_data() सिर्फ एक सरल साहचर्य सरणी देता है।
त्रुटि मैं मिलता है:
Fatal error: Uncaught exception 'MongoConnectionException' with message 'Unknown error'
लाइन पर:
$mongo = new Mongo('mongodb://admin:[email protected]:27017/test');
कोई भी विचार? क्या कुछ मौलिक है जो मुझे कुछ सुरक्षा या स्पैम-रोकथाम की तरह याद आ रही है?
अग्रिम धन्यवाद।
अतिरिक्त जानकारी:
स्क्रिप्ट 114.9797 के बारे में सेकंड में मर जाता है। यह एक PHP मेमोरी या समय आधारित मुद्दा नहीं है क्योंकि सभी सीमाएं उठाई गई हैं और मैंने कल बिना किसी समस्या के लगभग 120000 पंक्तियां (खुले कनेक्शन, डालने, बंद कनेक्शन को लूप करने की एक ही विधि के साथ) में अपना MySQL बेंचमार्क चलाया।
पीएचपी संस्करण चला 5.3.5
phpinfo मोंगो जानकारी:
MongoDB Support enabled
Version 1.2.0-
Directive Local Value Master Value
mongo.allow_empty_keys 0 0
mongo.allow_persistent 1 1
mongo.auto_reconnect 1 1
mongo.chunk_size 262144 262144
mongo.cmd $ $
mongo.default_host localhost localhost
mongo.default_port 27017 27017
mongo.long_as_object 0 0
mongo.native_long 0 0
mongo.no_id 0 0
mongo.utf8 1 1
हम्म, दिलचस्प। क्या आप कनेक्शन का पुनः उपयोग कर सकते हैं? शायद यह प्रति प्रक्रिया की बात है? क्या होता है यदि आप एक ही चीज़ को कोशिश करते हैं, तो पाइथन कहें? क्या आपने 'अज्ञात त्रुटि' के लिए MongoDB स्रोत (और/या PHP ड्राइवर) को grepped किया है? यदि आप कनेक्शन के बीच थोड़ा सोते हैं तो क्या होगा? – Cameron
वास्तव में कनेक्शन का पुन: उपयोग नहीं कर सकता क्योंकि यह एक बात है जिसे मैं बेंचमार्क में शामिल करना चाहता हूं। इस टिप्पणी के समय किसी ने कहा है कि उन्हें अपने रूबी ड्राइवर के साथ एक ही समस्या मिलती है। स्रोत में बिल्कुल नहीं देखा लेकिन जब मुझे मौका मिलेगा तो मैं करूंगा। उत्तर के लिए धन्यवाद। :) – Chrisui
हां, मैं बेंचमार्क के बारे में समझता हूं, मैं बस सोच रहा था कि क्या यह समस्याएं पैदा कर रहे हैं जो कई कनेक्शन हैं (जो संभवतः रमेश के जवाब दिए गए हैं) – Cameron