দ্য সেনারিও:
আপনার প্রতিটি লাইনে একটি স্ট্রিং (গড় বাক্য মূল্য মূল্য) সহ একটি ফাইল রয়েছে। যুক্তি দেখানোর জন্য এই ফাইলটি 1Mb আকারের (হাজার হাজার লাইন) বলে দিন।
আপনার কাছে একটি স্ক্রিপ্ট রয়েছে যা ফাইলটি পড়ে, নথির মধ্যে কিছু স্ট্রিং পরিবর্তন করে (কেবল সংযোজন নয় কিছু লাইন মুছে ফেলা ও সংশোধন করে) এবং তারপরে নতুন ডেটা দিয়ে সমস্ত ডেটা ওভাররাইট করে।
প্রশ্নসমুহ:
'সার্ভার' পিএইচপি, ওএস বা httpd ইত্যাদি এর মতো সমস্যাগুলি থামানোর জন্য ইতিমধ্যে ব্যবস্থা আছে (কোনও লেখার মধ্য দিয়ে অর্ধেক পাঠ / পড়া)?
যদি এটি হয় তবে দয়া করে এটি কীভাবে কাজ করে তা ব্যাখ্যা করুন এবং প্রাসঙ্গিক ডকুমেন্টেশনের উদাহরণ বা লিঙ্ক দিন।
যদি তা না হয় তবে আমি সক্ষম বা সেট আপ করতে সক্ষম এমন কিছু জিনিস রয়েছে যেমন কোনও লেখা শেষ না হওয়া পর্যন্ত কোনও ফাইলকে লক করা এবং অন্য সমস্ত পাঠক এবং / অথবা লেখাগুলি ব্যর্থ করে পূর্ববর্তী স্ক্রিপ্টটি লেখা শেষ না হওয়া পর্যন্ত?
আমার অনুমান এবং অন্যান্য তথ্য:
প্রশ্নে থাকা সার্ভারটি পিএইচপি এবং অ্যাপাচি বা লাইটটিপিডি চলছে।
যদি স্ক্রিপ্টটি একজন ব্যবহারকারী দ্বারা ডাকা হয় এবং ফাইলটিতে লেখার মধ্য দিয়ে অর্ধেক হয়ে থাকে এবং অন্য ব্যবহারকারী সেই মুহুর্তে ফাইলটি পড়েন। যে ব্যবহারকারী এটি পড়েন তিনি পুরো দস্তাবেজটি পাবেন না, কারণ এটি এখনও লেখা হয়নি। (যদি এই অনুমানটি ভুল হয় তবে দয়া করে আমাকে সংশোধন করুন)
আমি কেবল পিএইচপি রচনা এবং একটি পাঠ্য ফাইল পড়ার সাথে উদ্বিগ্ন এবং বিশেষত ফাংশন "ফোপেন" / "ফাইরাইট" এবং প্রধানত "ফাইল_পুট_কন্টেন্টস"। আমি "ফাইল_পুট_কন্টেন্টস" ডকুমেন্টেশনটি দেখেছি কিন্তু "LOCK_EX" পতাকাটি কী বা কী করছে তার বিশদের স্তর বা একটি ভাল ব্যাখ্যা খুঁজে পাইনি।
দৃশ্যমানটি সবচেয়ে খারাপ পরিস্থিতির একটি উদাহরণ যেখানে আমি ধরে নিই যে ফাইলগুলির আকার এবং ডেটা সম্পাদনা করার কারণে এই সমস্যাগুলি হওয়ার সম্ভাবনা বেশি। আমি এই বিষয়গুলি সম্পর্কে আরও শিখতে চাই এবং উত্তরগুলি বা "উত্তর মাইএসকিএল" বা "আপনি কেন এমন করছেন" এর মতো মন্তব্যগুলি চাই না কারণ আমি তা করছি না, আমি কেবল ফাইল পড়া / লেখার বিষয়ে জানতে চাই পিএইচপি সহ এবং সঠিক জায়গাগুলি / ডকুমেন্টেশনগুলি সন্ধান করছে বলে মনে হয় না এবং হ্যাঁ আমি বুঝতে পারি পিএইচপি এইভাবে ফাইলগুলির সাথে কাজ করার জন্য উপযুক্ত ভাষা নয়।
file_put_contents()
শুধু একটি মোড়কের হয় fopen()/fwrite()
নাচ, LOCKEX
একই যেন আপনি কল চাই না flock($handle, LOCKEX)
।