से अधिक समय लेता है मेरे पास एक php पृष्ठ है जिसे कभी-कभी स्क्रिप्ट की शुरुआत में डेटाबेस में लिखने की आवश्यकता होती है।PHP: MySQL क्वेरी छोड़ें यदि यह
शेड्यूल किए गए mysqldump बैकअप के दौरान, पृष्ठ पहुंच योग्य नहीं है, क्योंकि यह लॉक की गई तालिका को लिखने का प्रयास कर रहा है।
लॉक के दौरान, MySQL उन SQL अद्यतनों को कतार देता है, और बैकअप पूरा होने के बाद, उन्हें वांछित के रूप में निष्पादित किया जाता है। फिर भी मेरा PHP पृष्ठ तब तक प्रदर्शित नहीं होगा जब तक कि बैकअप पूरा न हो जाए।
हालांकि, चूंकि अपडेट स्क्रिप्ट पर कुछ भी वापस नहीं लौटते हैं, मेरी इच्छा है कि वे लॉक के दौरान मेरी स्क्रिप्ट को लटका नहीं देंगे; मुझे आशा है कि एक तरीका है जिससे मैं phs को mysql को एसक्यूएल अपडेट भेजने के लिए कह सकता हूं और अपडेट पूरा होने की पुष्टि के बारे में चिंता न करें।
मैं php को mysql को क्वेरी भेजने के लिए चाहता हूं, और फिर अद्यतन एक दूसरे में पूरा नहीं होने पर केवल PHP की अगली पंक्ति पर जारी रहना चाहता है।
मैं विंडोज सर्वर पर PHP चला रहा हूं, इसलिए मैं समझता हूं कि कुछ प्रकार का थ्रेडिंग एक विकल्प नहीं है।
यदि उस क्वेरी (विशेष रूप से) पर टाइमआउट सेट करने का कोई तरीका है, तो यह आदर्श हो सकता है, लेकिन अगर मैं समय निकालता हूं तो मैं पूरी तरह से एसक्यूएल अपडेट को फिर से नहीं लेना चाहता हूं। लॉक खत्म होने के बाद भी मैं MySQL को संसाधित करना चाहता हूं।
आप क्या सिफारिश करेंगे (एसक्यूएल अपडेट को हटाने के लिए पूरी तरह से एक विकल्प नहीं है)?
संभव नहीं है। वास्तविक क्वेरी कॉल यांत्रिकी पर PHP का कोई नियंत्रण नहीं है। PHP को थ्रेड नहीं किया गया है, भले ही यह किस ओएस पर चल रहा हो। –
यदि PHP में कुछ प्रकार का टाइमआउट फ़ंक्शन है जो encapsulated फ़ंक्शन पर टाइमआउट डालने के दौरान किसी अन्य फ़ंक्शन-कॉल को एन्सेप्लेटेड कर सकता है, तो क्या वह तकनीकी रूप से बहु-थ्रेडेड होगा? –
नहीं। PHP को थ्रेडिंग के लिए कोई समर्थन नहीं है, और अधिकतर संभावना पूरी भाषा के मूलभूत पुनर्लेखन के बिना कभी भी बहुप्रचारित नहीं होगी - उदा। PHP v6। अधिकांश PHP कोर पुस्तकालय थ्रेड सुरक्षित नहीं हैं। –