اسکریپت باران
بزرگترین مرجع دانلود سورس و اسکریپت های برنامه نویسی
با استفاده از تابع file_exists در PHP ، می توانیم چک کنیم که آیا یک تابع وجود دارد یا خیر.
به عنوان مثال فرض کنید بخواهیم که تنها در صورت وجود یک فایل با نام myFile.txt در محل فایل فعلی (در پوشه حاوی فایلی که در حال اجرای کدهای آن هستیم)، یک سری کد اجرا شود، برای این منظور، کدهای زیر را می نویسیم :
1 2 3 4 5 |
<?php if (file_exists('myFile.txt')) { // your code } ?> |
که در آن، به جای عبارت // your code ، باید کدهایی را بنویسیم که قصد داریم در صورت وجود فایل، اجرا شوند.
قبل از هر چیز، بهتر است شرح بدهیم که اصلا لینک سخت (hard link) به یک فایل چیست و چه کاربردی دارد. ساخت لینک سخت (hard link) برای یک فایل، به این معنی است که از آن فایل اصلی، یک فایل دیگر با نامی متفاوت (و یا حتی در محلی متفاوت)(یا با نام یکسان اما در محلی متفاوت) می سازیم، اما به گونه ای که هر تغییری که در یکی از این دو فایل بدهیم، فایل دیگر نیز تغییر می کند. در واقع دو فایل به هم لینک شده اند و به این نوع لینک شدن، لینک سخت (hard link) می گوییم.
با استفاده از تابع tmpfile در PHP ، می توانیم یک فایل موقتی (temporary) بسازیم، به گونه ای که وقتی مجموعه عملیات های مورد نظرمان با فایل تمام شد، وقتی فایل را ببندیم، دیگر آن فایل وجود نخواهد داشت.
به مثال زیر توجه کنید :
1 2 3 4 5 6 7 |
<?php $temp = tmpfile(); fwrite($temp, "www.scriptbaran.com"); fseek($temp, 0); echo fread($temp, 1024); fclose($temp); // this removes the file ?> |
خروجی صفحه به صورت زیر خواهد بود و فایل نیز دیگر وجود ندارد (وقتی تابع fclose را به کار ببریم، فایل خود به خود حذف می شود) :
1 |
www.scriptbaran.com |
با استفاده از تابع fnmatch در PHP ، می توانیم چک کنیم که آیا نام فایل (filename) با یک الگوی (pattern) مشخص مطابقت دارد یا خیر. اگرچه این تابع برای چک کردن نام فایل (filename) به کار می رود، اما هر رشته (string) دلخواه را نیز می توان با آن چک کرد.
به مثال زیر توجه کنید.
با استفاده از تابع disk_total_space در PHP ، می توانیم مقدار کل فضای (خالی و غیر خالی) یک فایل سیستمی (filesystem) یا یک درایو (disk partition) را به دست آوریم. تابع disk_total_space ، در صورت موفقیت، مقدار کل فضا (خالی و غیر خالی) را بر حسب تعداد بایت (bytes) بیان می کند و یا در صورت عدم موفقیت، مقدار false را برمی گرداند.
به مثال زیر توجه کنید.
با استفاده از تابع disk_free_space در PHP ، می توانیم مقدار فضای خالی یک فایل سیستمی (filesystem) یا یک درایو (disk partition) را به دست آوریم. تابع disk_free_space ، در صورت موفقیت، مقدار فضای خالی را بر حسب تعداد بایت (bytes) بیان می کند و یا در صورت عدم موفقیت، مقدار false را برمی گرداند.
به مثال زیر توجه کنید.
با استفاده از تابع fileperms در PHP ، می توانیم اجازه های (permissions) مربوط به یک فایل را به صورت یک عدد به دست بیاوریم. البته در مثال ها، مثالی را نیز ذکر می کنیم که با آن می توان از عدد به دست آمده، اجازه ها (permissions) را به صورت قابل درک، نمایش داد.
به مثال 1 زیر توجه کنید.
فرض کنید که در محل فایل فعلی (فایلی که در حال اجرای کدهای آن هستیم)، یک فایل با نام example.xml وجود دارد. برای به دست آوردن اجازه های (permissions) مربوط به این فایل، کدهای PHP زیر را اجرا می کنیم :
1 2 3 4 5 |
<?php $file = "example.xml"; $permissions = fileperms($file); echo $permissions; ?> |
1 |
33206 |
مثال 2 ) همان مثال قبل را این بار به گونه ای می نویسیم که اجازه ها (permissions) را به صورت قابل درک تری مشاهده کنیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php $file = "example.xml"; $perms = fileperms($file); if (($perms & 0xC000) == 0xC000) { // Socket $info = 's'; } elseif (($perms & 0xA000) == 0xA000) { // Symbolic Link $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { // Regular $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { // Block special $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { // Directory $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { // Character special $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { // FIFO pipe $info = 'p'; } else { // Unknown $info = 'u'; } // Owner $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); // Group $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); // World $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); echo $info; ?> |
1 |
-rw-rw-rw- |
با استفاده از تابع rmdir در PHP ، می توانیم یک پوشه (Folder) را حذف کنیم. برای حذف کردن یک پوشه (Folder)، باید دو شرط زیر صادق باشد :
1- پوشه (Folder) خالی باشد (شامل هیچ فایل یا پوشه ای نباشد).
2- اجازه های (permissions) مربوط به حذف پوشه را داشته باشیم.
به مثال زیر توجه کنید.
با استفاده از تابع mkdir در PHP ، می توانیم یک پوشه (Folder) جدید بسازیم.
به مثال زیر توجه کنید.
فرض کنید که بخواهیم در پوشه ای که فایل فعلی (فایلی که در حال اجرای کدهای آن هستیم) قرار دارد، یک پوشه (Folder) با نام Folder_1 بسازیم. برای این منظور، کدهای PHP زیر را اجرا می کنیم :
1 2 3 |
<?php mkdir("Folder_1"); ?> |
در محل فایل فعلی، یک پوشه با نام Folder_1 ساخته می شود.
اکنون فرض کنید که بخواهیم درون پوشه Folder_1 ، یک پوشه با نام Folder_2 بسازیم. برای این منظور، کدهای PHP زیر را می نویسیم :
1 2 3 |
<?php mkdir("Folder_1/Folder_2"); ?> |
درون پوشه Folder_1 ، یک پوشه با نام Folder_2 ساخته می شود.
به روش معمولی، نمی توانیم که یک مسیر حاوی دو پوشه جدید را بسازیم (ساخت دو پوشه به طور همزمان امکان پذیر نیست). مثلا اجرای کدهای زیر، یک خطا را به وجود می آورد (فرض کرده ایم که فولدر Folder_3 وجود ندارد) :
1 2 3 |
<?php mkdir("Folder_3/Folder_4"); ?> |
اما برای این منظور، می توانیم تابع mkdir را به صورت زیر به کار ببریم :
1 2 3 4 5 6 |
<?php $structure = 'Folder_3/Folder_4/'; if (!mkdir($structure, 0777, true)) { die('Failed to create folders...'); } ?> |
یک پوشه با نام Folder_3 ساخته می شود و درون آن، یک پوشه با نام Folder_4 ساخته خواهد شد.
فایل ها، پوشه ها (directory)، وسایل (devices) و لینک ها (links)، بر اساس inode سازمان دهی می شوند (دقت کنید که یک پوشه، خود یک فایل سیستمی می باشد). inode یک فایل، شامل اطلاعاتی در مورد محل ذخیره شدن دو مورد زیر می باشد :
1- بلوک های اطلاعات فایل (file’s data blocks)
2- اطلاعات metadata مربوط به فایل
مورد اول که همان اطلاعات اصلی فایل می باشد، اما منظور از metadata ، موارد زیر است :
1- اندازه فایل
2- محل قرارگیری فایل (یعنی مسیر directory)
3- اجازه های دسترسی (access permissions) به فایل
و …
بنابراین با استفاده از inode یک فایل، متوجه می شویم که بلوک های اطلاعات (data blocks) و اطلاعات metadata مربوط به آن فایل، در چه محلی ذخیره شده اند. یعنی inode ، یک اشاره گر (pointer) به آن اطلاعات می باشد.
کانال تلگرامی اسکریپت باران
برای اطلاع از آپدیت های این سورس و سورس های دیگر اسکریپت باران، در کانال تلگرام ما عضو شویدبرنامه نویسی را معنایی دوباره بخشیم !