مدیریت فایل (PHP File Handling)
مدیریت فایلها: حافظهیِ دائمیِ سیستم 📂📄
گاهی اوقات نیاز دارید اطلاعات را به جایِ دیتابیس، در فایلهایِ متنی ذخیره کنید یا تنظیماتِ سیستم را از یک فایل بخوانید. PHP تسلطِ کاملی بر سیستمِ فایل (Filesystem) دارد.
توابعِ سریع: readfile()
سادهترین راه برایِ خواندنِ یک فایل و چاپِ مستقیمِ آن در خروجی.
{code_block('echo readfile("webdictionary.txt");')}چک کردنِ وجودِ فایل:
قبل از هر عملیاتی، حتماً چک کنید فایل وجود دارد یا خیر:
{code_block('if (file_exists("test.txt")) { ... }')}www-data یا وبسرور، اجازهیِ خواندن (Read) و نوشتن (Write) در آن پوشه را دارد (CHMOD).
file_get_contents() و file_put_contents() راهکارهایِ "All-in-one" برایِ خواندن و نوشتنِ سریع هستند بدونِ اینکه درگیرِ باز و بسته کردنِ هندلر شوید.
گرفتنِ حجم فایل:
{code_block('echo filesize("test.txt");')}basename() تمیز کنید تا هکرها نتوانند با استفاده از ../ به فایلهایِ حساسِ سیستمِعامل دسترسی پیدا کنند.
بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️
درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرمافزار را رقم میزند.
۱. بهینهسازی I/O و بافرینگ
در هنگامِ کار با فایلهایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه میدهد فایل را خط به خط پردازش کنید که باعث میشود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.
۲. امنیتِ نشستها (Session Security)
مهمترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسهیِ نشستِ قبلی باطل شود. همچنین فلگهایِ HttpOnly و Secure را برای کوکیها فعال کنید.
۳. استانداردهایِ مدرن و Autoloading
در پروژههایِ بزرگ، استفاده از include دستی فاجعهبار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه میدهد کلاسها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا میبرد.
DateTime و PDO از این پارادایم استفاده میکنند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از تابعِ مناسب، چک کنید آیا فایلی به نام "data.txt" وجود دارد یا خیر. نتیجه را چاپ کنید.
<?php
echo file_exists("data.txt");
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.