Job ها در Laravel برای اجرای کدها به صورت ناهمزمان (asynchronous) و در پس زمینه (background) استفاده میشوند. با استفاده از Job ها میتوانید عملیاتهایی را که طولانی میشوند یا نیاز به زمان بیشتری برای اجرا دارند را به صورت مستقل از روند اصلی برنامه اجرا کنید.
با دستور `php artisan make:job` میتوانید یک فایل Job جدید ایجاد کنید. این دستور یک فایل PHP با قالب و ساختار پیشفرض برای Job شما ایجاد میکند. شما میتوانید درون این فایل کد مربوط به عملیاتی که میخواهید به صورت ناهمزمان انجام شود را بنویسید.
برای مثال، اگر شما یک Job به نام `ProcessPodcast` ایجاد کنید، میتوانید کدهای لازم برای پردازش یک پادکست درون این فایل قرار دهید. سپس میتوانید این Job را با استفاده از صفوف (queues) Laravel اجرا کنید و برنامه شما بدون تأخیر به اجرای کد اصلی خود ادامه دهد.
با استفاده از Job ها، میتوانید عملیاتهای زمانبر و محاسبات سنگین را به صورت پشت صحنه انجام دهید و نیازی به انتظار برای اتمام آنها نداشته باشید، بدون اینکه کارایی برنامه را تحت الشعاع قرار دهید.
مثال عملی برای استفاده ازmake:job
بطور خلاصه، در اینجا یک مثال عملی برای استفاده از `php artisan make:job` را ذکر میکنم.
فرض کنید شما یک وبسایت دارید که کاربران میتوانند فرمی را پر کنند و تصویری را برای آپلود ارسال کنند. هدف شما این است که تصویر آپلود شده را پردازش کنید، به عنوان مثال، تغییر سایز آن یا اعمال فیلترهایی روی آن قبل از ذخیرهسازی.
در این حالت، شما میتوانید از Job استفاده کنید تا پردازش تصویر را به صورت ناهمزمان و در پسزمینه انجام دهید. برای این کار، میتوانید با استفاده از دستور `php artisan make:job ProcessImage` یک فایل Job جدید با نام `ProcessImage` ایجاد کنید.
اجرای این دستور باعث ایجاد یک فایل PHP با محتوای پیشفرض برای Job شما میشود. شما میتوانید در این فایل کدهای لازم برای پردازش تصویر را نوشته و به عنوان پارامتر ورودی تصویر آپلود شده را دریافت کنید. سپس میتوانید با استفاده از کتابخانههای مورد نیاز، تصویر را پردازش کنید.
بعد از نوشتن کد Job، شما میتوانید آن را در هر جای برنامهی خود صدا کنید. به عنوان مثال، میتوانید در قسمتی از کد که پس از آپلود تصویر اجرا میشود، این دستور را قرار دهید:
“`php
ProcessImage::dispatch($uploadedImage);
“`
در اینجا `$uploadedImage` نیازمندی است که تصویر آپلود شده را نشان میدهد. با استفاده از `dispatch()`، Job شما به صف اجرای Laravel اضافه میشود و تصویر آپلود شده به عنوان پارامتر ورودی به Job ارسال میشود. Job سپس به صورت ناهمزمان و در پسزمینه اجرا میشود و شما بدون انتظار برای اتمام پردازش تصویر میتوانید برنامه خود را ادامه دهید.