راهنمای حذف و خالی کردن کش در لاراول
بسیاری از متغییر ها و اطلاعات مورد نیاز در اپلیکیشن که ثابت هستند و تغییری ندارند، در کش لاراول ذخیره میشود تا سرعت دستیابی آن بالا رود و نیاز به مصرف سیپییو برای هر بار اجرای اسکریپت و اپلیکیشن نباشد.
کش لاراول، به استفاده بهینه از منابع هاست به ما کمک میکند.
به این صورت که وقتی صفحه ای رندر میشود و اطلاعات آن توسط منابع هاست پردازش میشود، این اطلاعات به دست آمده در کش ذخیره میشود.
با استفاده از اطلاعات کش شده، در دفعات بعدی دیگر نیاز به پردازش و مصرف منابع هاست نیست و همان اطلاعات به صورت مستقیم از کش خوانده میشود.
خطای مربوط به کش لاراول
این مورد ممکن است در برخی موارد که این اطلاعات دچار تغییر میشوند باعث بروز خطا شوند مثلا زمانی که اطلاعات یک وب سایت لاراولی از یک شرکت دیگر به هاستینگ پارس وب سرور منتقل شده است.
انتقال اطلاعات از شرکتهای دیگر به شرکت پارس وب سرور رایگان بوده و بعد از تهیه سرویس، درخواست پشتیبانی ارسال کنید تا در اسرع وقت، تمام اطلاعات شما به هاستهای شرکت پارس وب سرور منتقل شود. (مشاهده جزئیات و قیمت های هاست های لاراول)
چون در اطلاعات کش شده، هنوز اطلاعات مربوط به هاست قبلی و مقادیر قبلی میباشد، اپلیکشن قادر به ارتباط و دریافت اطلاعات نمیباشد و ارور Permission denied میدهد.
UnexpectedValueException There is no existing directory at
"/home/user/domains/example.com/public_html/laravel/storage/logs" and
it could not be created: Permission denied
همینطور زمانی که پروژه ای که روی لوکال کامل و اجرا شده است، به هاست منتقل شود.
بعد از انتقال بر روی هاست باید مقادیر کش آن پاک شود تا مقادیر جدید مربوط به هاست جایگزین مقادیر قبلی شود.
همینطور زمانی که تغییرات در دیتابیس وب سایت، مثل نام کاربری و دیتابیس را تغییر دادید اما با وجود ذخیره در فایل env. ، تغییرات شما اعمال نمیشود. ارورهای مختلف مثل عدم وجود دیتابیس و یا عدم دسترسی یوزر به دیتابیس نمایش داده میشود، به دلیل خواندن اطلاعات از کش لاراول میباشد.
البته اینکه کدام موارد کش شوند و یا چطور کش شوند و کدام یک از اطلاعات نیاز به کش ندارند قابل تعریف میباشد که در مستندات لاراول به آن اشاره شده است.(مستندات رسمی کش لاراول)
برای لاراول ، فایل کش در مسیر زیر ذخیره میشود.
bootstrap/cache/config.php
در این فایل، تنظیماتی مثل مسیردهی، ارتباط با دیتابیس و blade ها و… در این فایل ذخیره میشود. برای اینکه اطلاعات از این فایل خوانده نشود، میتوانید این فایل را تغییر نام دهید و به انتهای نام فایل کلمه old را اضافه کنید تا به صورت config-old.php در بیاید.
در این حالت تنطیمات لاراول از کش لود نمی شود، و عموما با همین تغییر ارور کش لاراول رفع میشود.
دستورات حذف کش لاراول در محیط کامند لاین ترمینال
جهت پاک کردن کش در لاراول میتوانید دستور زیر را در ترمینال در مسر پروژه وارد و اجرا کنید
php artisan cache:clear
برای پاک کردن فقط کش مسیردهی ها میتوانید دستور زیر را در ترمینال وارد کنید
php artisan route:clear
خالی کردن فقط کش blade و view ها میتوان دستور زیر را وارد کرد
php artisan view:clear
با دستور زیر کل کش های لاراول حذف خواهند شد
php artisan optimize:clear
حذف زمان بندی شده کش لاراول
در صورتی که نیاز باشد که به صورت فواصل زمانی منظم و به صورت خودکار کش لاراول خالی شود میتوانیم این دستور را در این فایل وارد کنیم
app/console/kernel.php
دستوری که برای حذف کش به صورت روزانه و در ساعت 7 صبح انجام میشود و برای هر روز تکرار میشود.
$schedule->command('clear:data')->dailyAt('07:00');
می توانید زمان بندی را طوری تعریف کنیم که در ساعت مشخصی از روز (7 صبح در مثال بالا) کش ها را پاک کند و یا در طول هفته و یا در روز خاصی از ماه این کار انجام شود. حتما قبل از انجام تغییرات روی فایل، از فایل یک نسخه بک آپ تهیه بفرمایید و روی سیستم خود دانلود کنید.
برای مشاهده تنظیمات زمان بندی و سفارسی سازی این قسمت میتوانید این قسمت را مشاهده کنید (تنظیمات زمان بندی لاراول)
اجرای دستور خالی کردن کش لاراول بیرون از محیط کامندلاین
برای استفاده از دستورات آرتیسان در خارج از محیط کامند لاین، میتوانیم از دستورات در route استفاده کنیم و همان دستورات را فراخوانی کنیم
شکل کلی استفاده از دستورات در روت به صورت زیر میباشد.
Route::get('/foo', function()
{ $exitCode = Artisan::call('command:name', ['--option' => 'foo']); //
});
برای پاک کردن کش از طریق تعریف دستور در route میتوانیم از کد زیر استفاده کنیم
// clear route cache
Route::get('/clear-route-cache', function () { Artisan::call('route:cache'); return 'Routes cache has clear successfully !';
}); //clear config cache
Route::get('/clear-config-cache', function () { Artisan::call('config:cache'); return 'Config cache has clear successfully !';
}); // clear application cache
Route::get('/clear-app-cache', function () { Artisan::call('cache:clear'); return 'Application cache has clear successfully!';
}); // clear view cache
Route::get('/clear-view-cache', function () { Artisan::call('view:clear'); return 'View cache has clear successfully!';
});
با استفاده از این آموزش شما قادر خواهید بود کش لاراول خود را پاک کنید و خطاهای مربوط به کش لاراول را رفع نمایید.
چنانجه با این راهنما مشکل رفع نشد و یا در هر قسمت از این آموزش ابهام و یا مشکلی وجود داشت میتوانید درخواست پشتیبانی ارسال کنید.
همکاران بخش پشتیبانی در اسرع وقت، درخواست شما را بررسی و راهنمایی های لازم خدمت شما ارسال شود. (ارسال درخواست پشتیبانی)