فونکشن flock() PHP
تعریف و استفاده
فونکشن flock() قفل یا آزاد کردن فایل را انجام میدهد.
اگر موفق شود، true برمیگرداند. اگر شکست بخورد، false برمیگرداند.
جملات
flock(عملیات flock(),قفل,بلاک)
پارامتر | توضیح |
---|---|
عملیات flock() | ضروری. فایلهای باز را که باید قفل یا آزاد شوند مشخص میکند. |
قفل | ضروری. نوع قفل مورد استفاده را مشخص میکند. |
بلاک | اختیاری. اگر 1 یا true تنظیم شود، در صورت قفل شدن از سوی دیگرین پروسهها جلوگیری میشود. |
توضیح
توضیح عملیات flock() فایل
قفل باید یک اشارهگر فایل باز شده باشد.
- پارامتر میتواند یکی از ارزشهای زیر باشد: قفل LOCK_SH (در نسخههای قبل از PHP 4.0.1 تنظیم شده به 1) تنظیم شود.
- برای دریافت قفل مخصوص (برنامههایی که قصد دارند بنویسند)، قفل LOCK_EX (در نسخههای قبل از PHP 4.0.1 تنظیم شده به 2) تنظیم شود.
- برای رها کردن قفل (همه نوع اشتراکی یا مخصوص)، قفل LOCK_UN (در نسخههای قبل از PHP 4.0.1 تنظیم شده به 3) تنظیم شود.
- اگر نمیخواهید flock() در حال قفل شدن بپارز، به قفل با LOCK_NB (در نسخههای قبل از PHP 4.0.1 تنظیم شده به 4) اضافه شود.
نکات و توضیحات
نکته:میتوان fclose() برای رها کردن عملیات قفل، در پایان اجرای کد نیز به طور خودکار فراخوانی میشود.
نکته:چون flock() نیاز به یک اشارهگر فایل دارد، ممکن است مجبور به استفاده از یک فایل محافظهکار خاص برای محافظت از دسترسی به فایلهایی که قصد داریم با حالت نوشتن باز کنیم (در fopen() با "w" یا "w+" اضافه شود) باشیم.
مثال
<?php $file = fopen("test.txt","w+"); // exclusive locking if (flock($file,LOCK_EX)) { fwrite($file,"Write something"); // release lock flock($file,LOCK_UN); } else { echo "Error locking file!"; } fclose($file); ?>