जवाबों:
मैनुअल पेज flock(2)
लंबे समय से पुराना था, लेकिन तब से यह कहने के लिए अद्यतन किया गया है (मेरा):
लिनक्स 2.6.12 के बाद से, एनएफएस क्लाइंट पूरे फाइल पर बाइट-रेंज ताले के रूप में अनुकरण करके झुंड () लॉक का समर्थन करते हैं। इसका मतलब यह है कि fcntl (2) और झुंड () ताले एनएफएस पर एक दूसरे के साथ बातचीत करते हैं। लिनक्स 2.6.37 के बाद से, कर्नेल एक संगतता मोड का समर्थन करता है जो झुंड () ताले (और भी fcntl (2) बाइट क्षेत्र ताले) को स्थानीय के रूप में माना जाता है; nfs (5) में local_lock विकल्प की चर्चा देखें।
यह आधिकारिक मैन-पेज वेब साइट से है, http://man7.org/linux/man-pages/man2/flock.2.html , जो मैन-पेज से नया संस्करण दिखाता है 4.00
2005 में लिनक्स 2.6.12 जारी किया गया था।
यह मूल रूप से जनेब के जवाब पर टिप्पणी करने के लिए था, लेकिन उस समय मेरी प्रतिष्ठा नहीं थी। डॉक्टर अपडेट 2014 में हुआ: http://git.kernel.org/cgit/docs/man-pages/man-pages.git/commit/man2/flock.2?id=e449654fdb3f19bafc569df47d12bffdf6276236236
मुझे नहीं पता कि PHP flock()
फ़ंक्शन कैसे लागू किया जाता है, लेकिन यह flock()
सिसकॉल के लिए एक इंटरफ़ेस है , तो यह एनएफएस पर बिल्कुल भी काम नहीं करता है। से flock()
मैनपेज:
झुंड (2) एनएफएस पर फ़ाइलों को लॉक नहीं करता है। इसके बजाय fcntl (2) का उपयोग करें: जो एनएफएस पर काम करता है, लिनक्स के एक हालिया संस्करण और एक सर्वर को दिया जाता है जो लॉकिंग का समर्थन करता है।
और, ज़ाहिर है, सब कुछ जो एक आदमी पृष्ठ कहता है, चाहे कितना पुराना हो, अंतिम सत्य है।
flock()
पीएचपी सहित लिनक्स एनएफएस पर ठीक काम करता है। हम इसे बड़े पैमाने पर उपयोग करते हैं और इसे सत्यापित करने के लिए अच्छी तरह से परीक्षण कर चुके हैं कि यह वांछित है। यह देखने के लिए जांचें कि क्या आप क्लाइंट और सर्वर दोनों पर सभी आवश्यक सेवाएं चला रहे हैं। "Portmapper" और "rpc.statd" के लिए देखें। यदि वे नहीं चल रहे हैं, तो आपको यह पता लगाने की आवश्यकता है कि कौन सी इनिट स्क्रिप्ट आपके डिस्ट्रो पर शुरू होती है। डेबियन-आधारित डिस्ट्रोस पर यह " /etc/init.d/portmap
" और " /etc/init.d/nfs-common
" है।
क्लाइंट से, " rpcinfo -u $NFSSERVER status
" चलाएं और देखें कि क्या आपको प्रतिक्रिया मिलती है। मेरे सेटअप पर, मुझे "प्रोग्राम 100024 संस्करण 1 तैयार और प्रतीक्षा" परिणाम के रूप में मिलता है।
ओह, यह भी ध्यान रखें कि कुछ परिस्थितियों में एनएफएस और स्टेटड परेशान हो सकते हैं यदि क्लाइंट और सर्वर दोनों के पास एक दूसरे के लिए विश्वसनीय होस्टनाम प्रविष्टियां नहीं हैं। दोहरी जाँच/etc/hosts
दोनों मशीनों पर ।
बस खुद को जवाब देना चाहता था। समाधान यहां पाया जा सकता है: http://us3.php.net/manual/en/function.flock.php#82521