Artisan CLI
معرفی
Artisan نام رابط خط فرمان است که با لاراول ارائه شده است. تعدادی دستورات مفید را برای استفاده شما در حین توسعه برنامه ارائه می دهد. توسط مولفه قدرتمند کنسول Symfony هدایت می شود.
استفاده
فهرست کردن همه دستورات موجود
برای مشاهده لیستی از تمام دستورات Artisan موجود، می توانید از
list
دستور زیر استفاده کنید:
php artisan list
مشاهده صفحه راهنما برای یک فرمان
هر دستور همچنین شامل یک صفحه "راهنما" است که آرگومان ها و گزینه های موجود دستور را نمایش و توصیف می کند.
برای مشاهده صفحه راهنما، کافیست نام دستور را با علامت زیر وارد کنید
help
:
php artisan help migrate
تعیین محیط پیکربندی
می توانید محیط پیکربندی را که باید هنگام اجرای یک فرمان با استفاده از
--env
سوئیچ استفاده شود را مشخص کنید:
php artisan migrate --env=local
نمایش نسخه فعلی لاراول شما
همچنین می توانید نسخه فعلی نصب لاراول خود را با استفاده از
--version
گزینه زیر مشاهده کنید:
php artisan --version
فراخوانی دستورات خارج از CLI
گاهی اوقات ممکن است بخواهید دستور Artisan را خارج از CLI اجرا کنید.
برای مثال، ممکن است بخواهید دستور Artisan را از مسیر HTTP اجرا کنید.
فقط از
Artisan
نما استفاده کنید:
Route::get('/foo', function(){ $exitCode = Artisan::call('command:name', ['--option' => 'foo']); //});
حتی میتوانید دستورات Artisan را در صف قرار دهید تا در پسزمینه توسط کارگران صف پردازش شوند :
Route::get('/foo', function(){ Artisan::queue('command:name', ['--option' => 'foo']); //});
زمانبندی دستورات صنعتگر
در گذشته، توسعهدهندگان برای هر فرمان کنسولی که میخواستند برنامهریزی کنند، یک ورودی Cron ایجاد میکردند. با این حال، این یک سردرد است. زمانبندی کنسول شما دیگر در کنترل منبع نیست، و برای اضافه کردن ورودیهای Cron باید به سرور خود SSH کنید. بیایید زندگی خود را آسان تر کنیم. برنامه زمانبندی فرمان لاراول به شما این امکان را می دهد که به طور روان و واضح برنامه دستورات خود را در لاراول تعریف کنید و تنها یک ورودی Cron در سرور شما مورد نیاز است.
برنامه دستورات شما در
app/Console/Kernel.php
فایل ذخیره می شود.
در این کلاس یک متد خواهید دید
schedule
.
برای کمک به شما برای شروع، یک مثال ساده همراه با روش ارائه شده است.
شما آزاد هستید که هر تعداد کار برنامه ریزی شده را که می خواهید به
Schedule
شی اضافه کنید.
تنها ورودی Cron که باید به سرور خود اضافه کنید این است:
* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
این کرون هر دقیقه زمانبندی فرمان لاراول را فراخوانی می کند. سپس، لاراول کارهای برنامه ریزی شده شما را ارزیابی می کند و کارهایی را که موعد مقرر هستند اجرا می کند. این نمی تواند آسان تر باشد!
نمونه های برنامه ریزی بیشتر
بیایید به چند نمونه برنامه ریزی بیشتر نگاه کنیم:
برنامه ریزی بسته شدن
$schedule->call(function(){ // Do some task... })->hourly();
زمانبندی دستورات ترمینال
$schedule->exec('composer self-update')->daily();
Cron Expression دستی
$schedule->command('foo')->cron('* * * * *');
مشاغل مکرر
$schedule->command('foo')->everyFiveMinutes(); $schedule->command('foo')->everyTenMinutes(); $schedule->command('foo')->everyThirtyMinutes();
مشاغل روزانه
$schedule->command('foo')->daily();
مشاغل روزانه در یک زمان خاص (زمان 24 ساعته)
$schedule->command('foo')->dailyAt('15:00');
کار روزانه دو بار
$schedule->command('foo')->twiceDaily();
شغلی که هر روز هفته اجرا می شود
$schedule->command('foo')->weekdays();
مشاغل هفتگی
$schedule->command('foo')->weekly(); // Schedule weekly job for specific day (0-6) and time...$schedule->command('foo')->weeklyOn(1, '8:00');
مشاغل ماهانه
$schedule->command('foo')->monthly();
شغلی که در روزهای خاص اجرا می شود
$schedule->command('foo')->mondays();$schedule->command('foo')->tuesdays();$schedule->command('foo')->wednesdays();$schedule->command('foo')->thursdays();$schedule->command('foo')->fridays();$schedule->command('foo')->saturdays();$schedule->command('foo')->sundays();
جلوگیری از همپوشانی مشاغل
بهطور پیشفرض، کارهای برنامهریزیشده اجرا میشوند حتی اگر نمونه قبلی کار هنوز در حال اجرا باشد.
برای جلوگیری از این، می توانید از
withoutOverlapping
روش زیر استفاده کنید:
$schedule->command('foo')->withoutOverlapping();
در این مثال،
foo
اگر دستور از قبل اجرا نشده باشد، هر دقیقه اجرا می شود.
محیطی که مشاغل باید در آن اجرا شوند را محدود کنید
$schedule->command('foo')->monthly()->environments('production');
نشان می دهد که کار باید اجرا شود حتی زمانی که برنامه در حالت تعمیر و نگهداری است
$schedule->command('foo')->monthly()->evenInMaintenanceMode();
فقط زمانی که Callback درست است به Job اجازه اجرا داده شود
$schedule->command('foo')->monthly()->when(function(){ return true;});
ایمیل خروجی یک کار برنامه ریزی شده
$schedule->command('foo')->sendOutputTo($filePath)->emailOutputTo('foo@example.com');
توجه: باید خروجی را به یک فایل قبل از ارسال پست ارسال کنید.
خروجی کار برنامه ریزی شده را به یک مکان معین ارسال کنید
$schedule->command('foo')->sendOutputTo($filePath);
پس از اجرای کار، یک URL داده شده را پینگ کنید
$schedule->command('foo')->thenPing($url);
استفاده از این
thenPing($url)
ویژگی به کتابخانه HTTP Guzzle نیاز دارد.
با افزودن خط زیر به فایل خود می توانید Guzzle 5 را به پروژه خود اضافه کنید
composer.json
:
"guzzlehttp/guzzle": "~5.0"