اغلب هنگام ایجاد یک برنامه، حذف فایل ها ضروری می شود (دلایل می تواند بسیار متفاوت باشد) و در این صورت unlink php به کمک ما می آید. امروز یاد می گیریم که چگونه فایل ها را در PHP حذف کنیم و به چند نمونه نگاه می کنیم.
حذف فایل ها با unlink PHP
تابع unlink() برای حذف فایل ها استفاده می شود. سینتکس این تابع به صورت زیر است:
لغو پیوند (نام فایل)
این تابع Boolean است و بنابراین در صورت حذف موفقیت آمیز فایل، TRUE و در صورت شکست FALSE را برمی گرداند. استفاده را در نظر بگیرید لغو پیوند ()مثلا:
لازم به ذکر است که هنگام بارگذاری مجدد این صفحه، برنامه خطا ایجاد می کند. این به این دلیل است که اولین باری که تابع فراخوانی می شود، قبلاً فایل را حذف کرده است و دفعه بعد نمی تواند آن را پیدا کند.
راه های مختلفی برای حل این مشکل وجود دارد. به عنوان مثال، می توانید با استفاده از یک معماری برنامه داخلی پیچیده تر استفاده کنید عبارات مشروطاگر . یا فقط علامت @ را در جلوی خود تابع قرار دهید تا خطاهای رخ داده را نادیده بگیرید. در این حالت، حتی اگر فایل پیدا نشود، هیچ خطایی ایجاد نخواهد شد:
حذف فایل ها در پی اچ پی با استفاده از unlink اصلا سخت نیست، همانطور که می گویند شکستن ساختن نیست. دفعه بعد نحوه بررسی وضعیت فایل ها را یاد خواهیم گرفت.
PHP یک زبان برنامه نویسی است که در درجه اول برای ایجاد صفحات وب پویا استفاده می شود. مانند هر زبان برنامه نویسی دیگری، PHP دارای ویژگی های زیادی است که در میان آنها موارد مفید زیادی وجود دارد. به عنوان مثال، امکان حذف یک فایل که می توانید از آن در اسکریپت های خود استفاده کنید.
این نکته به شما کمک می کند تا یاد بگیرید چگونه حذف فایل در phpبا استفاده از تابع لغو پیوند.
آموزش گام به گام:
برای حذف یک فایل در PHP، می توانید از تابع استفاده کنید لغو پیوند. با استفاده از مثال یک اسکریپت ساده، کار را تحلیل می کنیم لغو پیوند:
- ایجاد کردن فایل متنیکه در ویرایشگر متن(vi/vim، nano، gedit یا فقط Notepad استاندارد).
- کد زیر را تایپ کرده یا فقط در آن کپی کنید:$file="example.log";
unlink ($file);
?> - ذخیره کنید (به عنوان مثال تحت نام testunlink.php) و فایل اسکریپت تولید شده را در وب سرور آزمایشی خود قرار دهید. در همان دایرکتوری، یک فایل example.log با هر محتوایی ایجاد کنید. این چیزی است که ما می خواهیم حذف کنیم.
- اسکریپت را با فراخوانی آن در مرورگر اجرا کنید، و وقتی دوباره در فهرست جستجو کنید، متوجه خواهید شد که فایل example.log دیگر آنجا نیست. لغو پیوندکارش را کرد!
چگونه همه کار می کند:
خط اول کد اسکریپت: نوع اسکریپت خود را تعریف می کنیم.
خط دوم کد: پس از اجرای اسکریپتی که ایجاد کردیم، به متغیر فایل مقدار داده می شود example.log(توجه داشته باشید که فایلی با همین نام باید در همان دایرکتوری اسکریپتی که ما ایجاد کردیم وجود داشته باشد. کافیست آن را با هر محتوایی ایجاد کنید!).
خط سوم کد: فایل example.log را با ارسال آن به عنوان آرگومان به تابع unlink حذف کنید.
خط چهارم کد اسکریپت: انتهای کد php.
بیایید سعی کنیم یک کار ساده حذف یک فایل یا چند فایل را با استفاده از PHP حل کنیم. به طور کلی، در اینجا هیچ چیز پیچیده ای وجود ندارد، اما جزئیات زیادی و همچنین راه حل هایی وجود دارد که باید در مورد آنها بدانید. در مقاله خود متعهد نمی شوم که بی نهایت را در آغوش بگیرم، اما فکر می کنم می توانم چند سوال را توضیح دهم و چند مثال بزنم. شروع کنیم؟
تابع unlink() PHP
و من با تابع unlink() php شروع می کنم که فایل را حذف می کند:
بوول لغو پیوند(رشته$filename[, منبع$context])
در اینجا $filename مسیر فایل است و $context (اختیاری) شرحی از زمینهها برای کار با جریانها است. (در PHP از نسخه 5.0.0 پشتیبانی می شود). تابع در صورت موفقیت TRUE یا در صورت خطا FALSE را برمیگرداند.
مثالی از استفاده از تابع ()unlink php:
$filename = "./path/to/file.txt";
چرا این تابع ()unlink نامیده می شود؟
این به این دلیل است که در سیستم فایل یونیکس بین مکان فیزیکی فایل ها در رسانه و ساختار دایرکتوری مربوطه تمایز وجود دارد. بنابراین هنگام ذخیره یک فایل در یک نقطه خاص سیستم فایلاین نقطه در درخت دایرکتوری با مکان فیزیکی که داده های فایل در آن ذخیره می شود مرتبط است. به عبارت دیگر، مسیر فایل یونیکس در واقع یک شناسه منحصر به فرد برای یکی از این گره ها است.
همچنین قابل توجه است که در یونیکس می توان چندین نقطه از این قبیل را با داده های مشابه مرتبط کرد. چنین داده هایی تا زمانی وجود خواهند داشت که حداقل یک پیوند به آن وجود داشته باشد. اما اگر همه لینک ها از بین بروند، خود داده ها نیز از بین می روند. بنابراین، تابع unlink () برای حذف پیوندها طراحی شده است، و در حال حاضر به عنوان یک نتیجه از داده های فایل.
در ویندوز، چنین چیزی وجود ندارد و تابع ()unlink فایل را حذف می کند. علاوه بر این، برخی از نسخه های ویندوز PHP به هیچ وجه از unlink () پشتیبانی نمی کنند. در این مورد، دستور del از طریق system() یا exec() استفاده می شود، برای مثال:
$filename = "/2014/04/file.txt";
if (isset($_ENV["WINDIR"])) (
@exec("del ". $filename);
if (file_exists($filename)) die("خطا در حذف فایل.");
) else if (!(@unlink($filename))) (
die ("خطا در حذف فایل.");
}
در این مورد، متغیر محیطی $_ENV["WINDIR"] میتواند به عنوان مورد استفاده قرار گیرد نشانگربا استفاده از پلتفرم ویندوز، و بررسی اینکه آیا فایل حذف شده است یا خیر، از طریق تابع php file_exists() انجام می شود که وجود فایل را بررسی می کند.
چگونه فایل(های) را در PHP حذف کنیم؟
در برخی موارد، ممکن است اتفاق بیفتد که تابع ()unlink به حذف فایل دسترسی نداشته باشد، یعنی. خطا می گیریم : اجازه رد شد. این ممکن است به دلیل تعیین نادرست مسیر فایل یا عدم دسترسی به آن باشد.
یک گزینه جالب برای کار با مسیرهای فایل استفاده از توابع ()getcwd php است (نام دایرکتوری فعلی را دریافت می کند)و chdir() (دایرکتوری فعلی را به فهرست مشخص شده تغییر می دهد)، مثلا:
$file_path = "مسیر/به";
$file_name = "/2014/04/file.txt";
$old = getcwd();
if (!(@chdir($file_path))) die("خطا در باز کردن مسیر.");
if (!(@unlink($file_name))) die("خطا در حذف فایل.");
chdir($old);
همانطور که می بینید، پیمایش و ردیابی مشکل به نوعی آسان تر است. در عین حال، پس از انجام حذف، بازگشت به دایرکتوری $old فعلی اضافی نخواهد بود.
در مورد مشکلات دسترسی، در اینجا می توانید از تابع php chmod () استفاده کنید. (حالت دسترسی به فایل را تغییر می دهد)، مثلا:
$filename = "/2014/04/path/to/file.txt";
@chmod($filename, 0666)؛
if (!(@unlink($filename))) die("خطا در حذف فایل.");
اگر احتیاج داری تمام فایل های یک دایرکتوری را حذف کنیداستفاده از ترکیبی از توابع php ()array_map راحت است (یک تابع تماس را برای همه عناصر آرایه اعمال می کند)و glob() (مسیرهای فایل منطبق با یک الگو را پیدا می کند)، مثلا:
array_map("unlink"، glob("some/dir/*.txt"));
حل مشکل چند رشته ای هنگام حذف فایل ها
وقتی صحبت از سایتهای بزرگ میشود، جایی که تعداد زیادی درخواست همزمان (رشتهها) به اسکریپت وجود دارد، بسیار دشوارتر است. در اینجا تعدادی راه حل وجود دارد. من فقط یکی از آنها را می دهم، اصلی ترین آن استفاده است سمافورها.
همینطور، سمافوربه عنوان یک نوع عمل می کند نشانگرروند. هنگامی که یک سمافور توسط یک فرآیند به دست می آید، ارزش آن یک کاهش می یابد و زمانی که آزاد می شود، یک افزایش می یابد. در این حالت، اگر مقدار فعلی سمافور صفر باشد، فرآیند قادر به گرفتن آن نخواهد بود و منتظر می ماند تا سمافور آزاد شود.
تابع sem_get() برای به دست آوردن منبع سمافور استفاده می شود. یک تابع می تواند یک سمافور با مقداری غیر از یک دریافت کند و سپس چندین رشته می توانند سمافور را بگیرند. تابع sem_acquire() برای گرفتن عکس استفاده می شود. مثال:
$sem = sem_get(1);
if (sem_acquire($sem) && file_exists($filename)) @unlink($filename);
sem_remove($sem);
توجه داشته باشید که یک بررسی اضافی برای وجود file_exists() در اینجا استفاده می شود. نکته این است که وقتی نخ اول سمافور را بدست میآورد، فایل را حذف میکند و سمافور را آزاد میکند، رشته دوم میتواند بدون حذف فایلی که دیگر وجود ندارد، اجرا را ادامه دهد.
نقش مهمی در اینجا توسط تابع sem_remove() ایفا می کند که سمافور شلوغ را آزاد می کند. اگر سمافور آزاد نشود، نخ موازی تا پایان فعلی در حالت انتظار باقی می ماند. بنابراین، تابع باید خارج از شرایط باشد.
این همه برای من است. امیدوارم مقاله من برای شما مفید بوده باشد یا فقط آموزنده باشد. با تشکر از توجه شما. موفق باشید!
ساعت 8:00 | ویرایش پیام |
ما درس را ادامه می دهیم که به موضوع اختصاص دارد " کار با فایل های PHP". اگر مطلب قبلی را نخوانده اید، خواندن آن را توصیه می کنم و کسانی که آن را خوانده اند ادامه دهند. در این درس یاد می گیرید که چگونه یک فایل ایجاد شده یا موجود را با آن حذف کنید با استفاده از PHP، فایل را کپی یا تغییر نام دهید، قفل کنید.
خوب، اگر آماده ای، پس به جنگ برو...
حذف فایل در PHP
اگر نیاز به حذف یک فایل دارید، از تابع unlink() PHP استفاده کنید:
unlink (نام فایل)؛
نام فایل - نام فایلی را که می خواهید حذف کنید را در اینجا وارد کنید.
فرض کنید باید فایل "file.txt" را حذف کنیم، یک مثال برای پر کردن به این صورت خواهد بود:
Unlink ("file.txt");
کد تمام شده: