گروه نرم افزاری چابک > طراحی و توسعه > لاراول > اجرای کامندهای Artisan فریم ورک لاراول در هاست اشتراکی
اجرای کامندهای Artisan فریم ورک لاراول در هاست اشتراکی

در صورتی که از فریم ورک لاراول برای توسعه وب اپلیکیشن خود استفاده کرده باشید حتما با دستورات ارتیسن آشنایی دارید. یک کامند همه کاره برای ایجاد و اجرای بسیاری از اکشن های مورد نیاز در توسعه نرم افزار با فریم ورک لاراول!

برای توسعه برنامه خود توسط فریم ورک لاراول اگر از سرور محلی (Localhost)، سرور اختصاصی، مجازی یا هاستی که دسترسی SSH را برای شما فراهم نماید استفاده کنید مشکلی با اجرای دستورات Artisan نخواهید داشت و به راحتی می توانید دستورات مورد نیاز را از طریق command line یا SSH اجرا نمایید. اما در بسیاری از هاست های اشتراکی امکان استفاده از SSH وجود ندارد. اکثر توسعه دهندگان برنامه خود را بر روی سرور محلی توسعه میدهند و با استفاده از کامندهای ارتیسن بسیاری از نیازهای خود را برطرف می کنند. اما مشکل جایی شروع می شود که وب اپلیکیشن خود را در هاست اشتراکی بارگزاری می کنید. برنامه بخوبی اجرا شده و عملکرد مناسبی دارد اما برای بهینه سازی و بسیاری از توسعه های مورد نیاز در زمانی که محصول نهایی شده است شاید نیاز داشته باشید برخی از دستورات ارتیسن را اجرا نمایید(مانند کش کردن روت ها، پاک سازی سشن ها و ….. در اینصورت راه حل چیست؟

در صورتی که دسترسی به SSH ندارید به سادگی می توانید دستورات ارتیسن را با استفاده از فساد Artisan و متد Call() و از طریق روت ها یا کنترلر اجرا نمایید.

۱- یک روت جدید با نام مورد نظر از نوع GET در مسیر routes/web.php ایجاد کنید و کامند مورد نظر ارتیسن را از طریق کلاس Artisan صدا بزنید

Route::get('/cache-clear', function(){
     artisan::call('cache:clear');
});

حال روت ایجاد شده را در مرورگر وارد کنید. به عنوان مثال ادرس ما در قطعه کد بالا به اینصورت خواهد بود yourdomain.com/cache-clear

با رفتن به ادرس فوق اجرای کامند به سادگی صورت خواهد پذیرفت.

میتوانید روت پویاتری داشته باشید و دستوراتی مختلفی را با استفاده از روت ها اجرا نمایید. به قطعه کد زیر توجه کنید

Route::get('/command/{name}', function ($name = null) {
	if ($name == 'cache-clear') {
		   try {
				echo 'php artisan cache:clear... <br>';
				Artisan::call('cache:clear');
				echo 'app cache clear completed';
		   }		  
				catch (Exception $e) {
				return $e->getMessage();
				}
		   
	}
	elseif ($name == 'view-clear') {
			try {
				echo 'php artisan view:clear... <br>';
				Artisan::call('view:clear');
				echo 'app view clear completed';
		   }		  
				catch (Exception $e) {
				return $e->getMessage();
				}
		
	}
	else {
		abort(404);
	}
});

حال به سادگی می توانید دستورات مختلفی را ایجاد کنید و با استفاده از یک روت پویا به انها دسترسی داشته باشید. در صورتی که در ادرس بار مرورگر yourdomain.com/command/cache-clear را وارد کنید، هم پیامی مبنی بر اجرای نوع عملیات که پاکسازی کش میباشد دریافت خواهید کرد و هم اینکه پیامی مبنی بر کامل شدن اجرای دستور یا خطا. همچنین ورودی دیگری که ادرس پویای ما دریافت می کند پاکسازی view ها می باشد که از طریق ادرس yourdomain.com/command/view-clear در دسترس است. می توانید دستورات دیگری را نیز به همین منوال در قطعه کد بالا اضافه نمایید.

لازم به ذکر است این نوع از روت ها باید با یک middleware محافظت شوند تا دسترسی برای عموم امکان پذیر نباشد.

می توان با استفاده از یک کنترولر اختصاصی اجرای دستورات ارتیسن نیز تمامی کامندهای مورد نیاز را پیاده سازی نمود و با ایجاد روت به کنترلر و صدا زدن متد مورد نظر دستورات را اجرا نمود. هدف از ارائه این مطلب اشنایی با فاساد Artisan و متد Call() بود. نحوه پیاده سازی می تواند متفاوت و بسته به نیاز توسعه دهنده باشد. شما حتی میتوانید از طریق یک کنترلر و روت پویا که پارامتر یا پارامترهای ورودی دریافت میکند از ادرس بار مرورگر به جای کامند لاین استفاده نمایید

موفق باشید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *