لطفاً امتیاز دهید

لاراول 13.25 در منتشر شد و یکی از مهم‌ترین قابلیت‌های آن امکان توقف هم‌زمان تمام Queueها با یک دستور است. با queue:pause --all می‌توان پردازش Jobهای جدید را روی تمام Connectionها متوقف کرد و بدون قرار دادن کل اپلیکیشن در Maintenance Mode، یک Deploy یا عملیات حساس را انجام داد.

این نسخه علاوه بر مدیریت سراسری Queueها، دستور php artisan dev را نیز به یک رابط کاربری چندتب در ترمینال مجهز کرده است؛ قابلیتی که اجرای هم‌زمان Server، Queue، Log و Vite را برای توسعه محلی ساده‌تر می‌کند.

لاراول 13.25 چه تغییراتی دارد؟

نسخه 13.25 یک به‌روزرسانی مهم در مسیر توسعه Laravel 13 محسوب می‌شود. تمرکز بخشی از تغییرات این نسخه روی تجربه توسعه‌دهنده، مدیریت Queueها و ساده‌تر شدن فرآیند Deploy است.

مهم‌ترین تغییرات Laravel 13.25 عبارت‌اند از:

  • توقف تمام Queueها با queue:pause --all
  • فعال‌سازی مجدد Queueها با queue:resume --all
  • اضافه شدن Queue::pauseAll() و Queue::resumeAll()
  • رابط کاربری چندتب برای artisan dev
  • پشتیبانی از حالت‌های tabs، stream و inline در artisan dev
  • قابلیت‌هایی برای مدیریت بهتر Image Response
  • اضافه شدن Eventهای QueuesPaused و QueuesResumed
  • اضافه شدن Event مربوط به Jobهای Unique که اجرا نشده‌اند
  • اضافه شدن اطلاعات Timeout به JobTimedOut
  • قابلیت Fail شدن Notification در صورت Timeout
  • اضافه شدن withoutCookies() برای Responseها
  • اضافه شدن Schema Helper با نام foreignUlidFor()
  • تغییر رفتار Request::all() در شرایطی که Input و File دارای کلید یکسان باشند.

مهم‌ترین قابلیت Laravel 13.25؛ توقف همه Queueها با یک دستور

تا قبل از این تغییر، اگر یک پروژه Laravel چند Connection یا Queue مختلف داشت، برای متوقف کردن پردازش‌ها باید Queueهای موردنظر را جداگانه مدیریت می‌کردید.

این موضوع در پروژه‌های بزرگ می‌تواند هنگام Deploy دردسرساز باشد؛ مخصوصاً زمانی که Queueهایی مانند ارسال ایمیل، پردازش تصویر، Import، Notification و عملیات مالی به‌صورت هم‌زمان فعال هستند.

Laravel 13.25 یک گزینه سراسری به دستور Queue اضافه کرده است:

php artisan queue:pause --all

با اجرای این دستور، تمام Queueها روی Connectionهای مختلف در حالت Pause قرار می‌گیرند.

برای فعال کردن دوباره پردازش Queueها نیز کافی است اجرا کنید:

php artisan queue:resume --all

این قابلیت به‌خصوص برای زمان‌هایی مانند Deploy، Migrationهای حساس، تغییر ساختار Jobها و مدیریت Incident می‌تواند کاربردی باشد.

چرا توقف Queueها هنگام Deploy اهمیت دارد؟

فرض کنید یک اپلیکیشن Laravel دارید که چند Worker روی Redis اجرا می‌کند.

در زمان Deploy، کد جدید روی سرور قرار می‌گیرد اما ممکن است Workerها هنوز در حال اجرای نسخه قبلی باشند. در چنین شرایطی یک Job می‌تواند در فاصله تغییر نسخه کد، توسط Worker نامتناسب پردازش شود.

این وضعیت همیشه مشکل ایجاد نمی‌کند، اما اگر مثلاً ساختار یک Job تغییر کرده باشد، نام کلاس آن عوض شده باشد یا Constructor جدیدی داشته باشد، احتمال شکست پردازش Job وجود دارد.

در گذشته یکی از راهکارها استفاده از Maintenance Mode بود؛ اما Maintenance Mode کل اپلیکیشن را تحت تأثیر قرار می‌دهد، در حالی که ممکن است فقط بخواهید Workerها موقتاً متوقف شوند.

در Laravel 13.25 می‌توانید Queueها را متوقف کنید و در عین حال بخش HTTP اپلیکیشن همچنان در دسترس کاربران باقی بماند.

Queue Pause دقیقاً چه کاری انجام می‌دهد؟

Pause کردن Queue به معنای متوقف کردن کامل Worker نیست.

Worker همچنان اجرا می‌شود، اما هنگام بررسی Queue، Job جدیدی را برای پردازش دریافت نمی‌کند. در نتیجه فرآیند Worker زنده باقی می‌ماند اما موقتاً Job جدیدی را از Queue برنمی‌دارد.

یک نکته مهم نیز وجود دارد: اگر یک Job پیش از اجرای queue:pause --all در حال پردازش باشد، متوقف نمی‌شود و اجازه دارد کار خود را به پایان برساند.

بنابراین این دستور برای قطع ناگهانی Jobهای در حال اجرا طراحی نشده است؛ بلکه از شروع پردازش Jobهای جدید جلوگیری می‌کند.

آیا Jobهای جدید هنگام Pause حذف می‌شوند؟

خیر.

وقتی Queueها Pause هستند، Producerها همچنان می‌توانند Jobهای جدید را Dispatch کنند.

برای مثال:

SendInvoice::dispatch($invoice);

حتی در زمان Pause شدن Queue نیز می‌تواند Job را در Redis یا Driver مورد استفاده قرار دهد.

تفاوت اینجاست که Worker تا زمان Resume شدن Queue آن Job را پردازش نمی‌کند. بنابراین Pause کردن Queue به معنی پاک کردن یا از دست دادن Jobها نیست.

این ویژگی برای Deploy بسیار مهم است، زیرا می‌توانید در زمان توقف پردازش، Jobهای جدید را در صف نگه دارید و بعد از اتمام عملیات دوباره پردازش را ادامه دهید.

تفاوت pause با queue:restart

این دو دستور هدف یکسانی ندارند.

queue:restart بیشتر برای اطلاع دادن به Workerهاست تا پس از پایان Job فعلی، دوباره راه‌اندازی شوند. اما Pause کردن Queue به‌صورت مشخص از دریافت Job جدید جلوگیری می‌کند.

در یک سناریوی Deploy، می‌توان ابتدا Queueها را Pause کرد، عملیات لازم را انجام داد و بعد از اطمینان از آماده بودن نسخه جدید، Queueها را Resume کرد.

بنابراین queue:pause --all را باید بیشتر به‌عنوان یک ابزار کنترل پردازش Queue در زمان عملیات حساس در نظر گرفت، نه جایگزین کامل تمام ابزارهای مدیریت Worker.

استفاده از Queue Facade در Laravel 13.25

این قابلیت فقط به Artisan محدود نیست.

در کد PHP نیز می‌توانید از متدهای جدید Facade مربوط به Queue استفاده کنید:

use Illuminate\Support\Facades\Queue;

Queue::pauseAll();

Queue::resumeAll();

این قابلیت می‌تواند برای Scriptهای Deploy یا سیستم‌های مدیریتی داخلی مفید باشد؛ مثلاً اگر یک پنل مدیریت برای عملیات زیرساختی پروژه ساخته‌اید، می‌توانید کنترل Pause و Resume را مستقیماً از کد Laravel انجام دهید.

یک نکته مهم درباره resumeAll()

Pause سراسری و Pause اختصاصی Queueها مستقل از یکدیگر هستند.

فرض کنید قبلاً یک Queue مشخص را به‌دلیل وجود یک Job مشکل‌دار به‌صورت دستی Pause کرده‌اید. سپس برای Deploy کل Queueها را با pauseAll() متوقف می‌کنید.

بعد از Deploy اگر resumeAll() را اجرا کنید، Queueای که از قبل به‌صورت اختصاصی Pause شده بود همچنان Pause باقی می‌ماند.

این رفتار عمدی است تا یک اسکریپت Deploy نتواند Queueای را که قبلاً توسط مدیر سیستم برای بررسی یک مشکل متوقف شده، به‌طور ناخواسته دوباره فعال کند.

Eventهای جدید برای مدیریت Queue

Laravel 13.25 علاوه بر Commandها، دو Event جدید نیز برای Pause و Resume سراسری Queueها اضافه کرده است:

use Illuminate\Queue\Events\QueuesPaused;
use Illuminate\Queue\Events\QueuesResumed;

برای مثال می‌توانید هنگام Pause شدن همه Queueها یک Log ثبت کنید:

Event::listen(function (QueuesPaused $event) {
    Log::warning('All queues paused');
});

این قابلیت برای سیستم‌های مانیتورینگ و مدیریت عملیات زیرساختی کاربرد دارد و به تیم توسعه اجازه می‌دهد رویدادهای مهم Queue را در کنار سایر Eventهای سیستم ثبت کند.

php artisan dev در Laravel 13.25 چه تغییری کرده است؟

یکی دیگر از تغییرات قابل توجه Laravel 13.25 مربوط به دستور معروف:

php artisan dev

است.

در نسخه جدید، این دستور از یک Terminal UI چندتب استفاده می‌کند و اجرای سرویس‌های مختلف پروژه را در محیط ترمینال منظم‌تر می‌کند.

Laravel برای این ساختار از @laravel/multiplex استفاده کرده است.

مدیریت Server، Queue، Logs و Vite در یک محیط

در توسعه محلی معمولاً چند فرآیند به‌صورت هم‌زمان اجرا می‌شوند؛ برای مثال:

  • Laravel Server
  • Queue Worker
  • Laravel Pail یا Log
  • Vite
  • سایر Processهای توسعه

در روش‌های قدیمی، خروجی این Processها ممکن بود همگی در یک Terminal به‌صورت پشت سر هم نمایش داده شوند.

وقتی حجم Log بالا می‌رود، پیدا کردن خط موردنظر سخت‌تر می‌شود.

رابط کاربری جدید artisan dev این Processها را در Tabهای جداگانه مدیریت می‌کند تا توسعه‌دهنده بتواند بین آن‌ها جابه‌جا شود.

قابلیت‌های Terminal UI جدید Laravel

رابط جدید فقط یک ظاهر متفاوت نیست و چند قابلیت مدیریتی نیز ارائه می‌دهد.

از جمله:

  • Tab جداگانه برای Processها
  • جست‌وجو در خروجی
  • پاک کردن Log هر Process
  • Restart کردن هر Process
  • Restart خودکار Process در صورت Crash
  • نمایش خروجی‌ها در حالت‌های مختلف
  • نگهداری Buffer مربوط به Logها هنگام خروج از دستور

این تغییر باعث می‌شود artisan dev بیشتر شبیه یک داشبورد توسعه درون ترمینال عمل کند.

حالت‌های مختلف artisan dev

در Laravel 13.25 سه حالت اصلی برای اجرای رابط توسعه در نظر گرفته شده است.

حالت Tabs

این حالت، روش پیش‌فرض است و Processها را در Tabهای جداگانه نمایش می‌دهد.

php artisan dev

برای توسعه روزمره معمولاً همین حالت کاربردی‌ترین انتخاب است.

حالت Stream

اگر ترجیح می‌دهید خروجی تمام Processها در یک جریان مشترک نمایش داده شود، می‌توانید از این دستور استفاده کنید:

php artisan dev --stream

این حالت برای کسانی که به مدل قدیمی‌تر نمایش Logها عادت دارند، می‌تواند مناسب‌تر باشد.

حالت Inline

حالت Inline برای محیط‌هایی که Terminal UI تعاملی در دسترس نیست، کاربرد دارد و خروجی را به شکل ساده‌تری نمایش می‌دهد.

Laravel همچنین امکان تنظیم برخی رفتارهای artisan dev از طریق DevCommands را فراهم کرده است. برای مثال می‌توان Stream را به‌عنوان حالت پیش‌فرض تعیین کرد یا Auto Restart را غیرفعال کرد.

آیا artisan dev روی همه سیستم‌عامل‌ها یکسان است؟

خیر.

طبق توضیحات مربوط به این قابلیت، مسیر جدید مبتنی بر multiplex در حال حاضر برای macOS و Linux طراحی شده و در Windows از concurrently استفاده می‌شود.

همچنین مسیر جدید به Node.js نسخه 22.13 یا بالاتر نیاز دارد. بنابراین اگر بعد از ارتقای Laravel با مشکل اجرای artisan dev مواجه شدید، نسخه Node.js و محیط توسعه خود را نیز بررسی کنید.

قابلیت‌های دیگر Laravel 13.25

Laravel 13.25 فقط درباره Queue و artisan dev نیست.

یکی دیگر از تغییرات این نسخه، بهبود API مربوط به Image است. در نسخه جدید، Image قابلیت Responsable را پیاده‌سازی کرده و می‌توان Instance تصویر را مستقیماً از Route بازگرداند.

همچنین Image::fromStream() اضافه شده و toFormat() نیز عمومی شده است.

از تغییرات دیگر می‌توان به موارد زیر اشاره کرد:

  • Event مربوط به UniqueJobSkipped
  • ثبت مقدار Timeout در JobTimedOut
  • امکان Fail شدن Notification هنگام Timeout
  • متد withoutCookies() برای Responseها
  • Schema Helper جدید با نام foreignUlidFor()
  • تغییر اولویت Request::all() در برخورد بین Input و File

این تغییرات در کنار قابلیت‌های Queue و ابزار توسعه، مجموعه Laravel 13.25 را به یک به‌روزرسانی کاربردی برای توسعه‌دهندگان Laravel تبدیل کرده‌اند.

Laravel 13.25 در ادامه مسیر Laravel 13

Laravel 13 در 17 مارس 2026 منتشر شد و طبق سیاست رسمی انتشار Laravel، نسخه‌های Minor و Patch می‌توانند به‌صورت منظم منتشر شوند و نباید شامل Breaking Change باشند. Laravel 13 همچنین تا سه‌ماهه سوم 2027 به‌روزرسانی‌های Bug Fix و تا 17 مارس 2028 به‌روزرسانی‌های امنیتی دریافت خواهد کرد.

در خود Laravel 13 نیز قابلیت‌هایی مانند Queue Routing، منابع JSON:API، قابلیت‌های مرتبط با جست‌وجوی معنایی و Vector Search و Attributeهای جدید PHP اضافه شده‌اند.

بنابراین Laravel 13.25 را باید در چارچوب توسعه تدریجی Laravel 13 دید؛ نسخه‌ای که بیشتر روی تجربه توسعه، عملیات Queue و ابزارهای روزمره برنامه‌نویسان تمرکز دارد.

پرشیا وب به‌عنوان یکی از ارائه‌دهندگان خدمات طراحی سایت و توسعه اپلیکیشن، با تمرکز بر بهینه‌سازی عملکرد و پیاده‌سازی استانداردهای روز، می‌تواند در کنار استفاده از فریم‌ورک‌هایی مانند Laravel به کسب‌وکارها کمک کند تا پروژه‌های خود را سریع‌تر و پایدارتر توسعه دهند. این مجموعه با ارائه راهکارهای حرفه‌ای در حوزه وب، تجربه‌ای یکپارچه برای توسعه‌دهندگان و صاحبان کسب‌وکار فراهم می‌کند.

آیا ارتقا به Laravel 13.25 ارزش دارد؟

اگر پروژه شما روی Laravel 13 قرار دارد و از Queueهای متعدد استفاده می‌کند، قابلیت queue:pause --all می‌تواند دلیل خوبی برای بررسی این به‌روزرسانی باشد.

این ویژگی مخصوصاً برای پروژه‌هایی که دارای:

  • چند Connection
  • چند Queue
  • Redis
  • Workerهای متعدد
  • Deployهای مکرر
  • Jobهای حساس
  • سیستم‌های Notification و Email
  • پردازش‌های پس‌زمینه سنگین

هستند، کاربرد بیشتری دارد.

اگر بیشتر زمان توسعه شما در محیط محلی می‌گذرد، تغییر artisan dev نیز می‌تواند تجربه کار با Laravel را ساده‌تر کند.

با این حال، قبل از ارتقای یک پروژه Production، بهتر است نسخه PHP، پکیج‌های شخص ثالث و فرآیند Deploy پروژه را بررسی و ابتدا ارتقا را در محیط Staging آزمایش کنید.

نمونه سناریوی پیشنهادی برای Deploy

فرض کنید می‌خواهید نسخه جدید یک پروژه Laravel را روی Production منتشر کنید.

یک روند منطقی می‌تواند به این شکل باشد:

php artisan queue:pause --all

سپس عملیات Deploy، انتشار فایل‌های جدید، اجرای Migrationهای موردنیاز و سایر مراحل کنترل‌شده انجام شود.

بعد از اینکه مطمئن شدید نسخه جدید آماده پردازش Jobهاست:

php artisan queue:resume --all

در این مدل، Queueها در زمان حساس Deploy، Job جدیدی را پردازش نمی‌کنند اما خود اپلیکیشن لزوماً برای کاربران وارد Maintenance Mode نمی‌شود.

البته ترتیب دقیق Deploy باید با معماری پروژه، نوع Jobها، Strategy مربوط به Migration و نحوه مدیریت Workerها هماهنگ شود. قابلیت جدید Laravel جایگزین طراحی صحیح فرآیند Deployment نیست؛ بلکه ابزار کنترل بهتری در اختیار تیم توسعه قرار می‌دهد.

جمع‌بندی

Laravel 13.25 یکی از به‌روزرسانی‌های کاربردی Laravel 13 است که دو تغییر آن بیش از بقیه مورد توجه توسعه‌دهندگان قرار گرفته‌اند: امکان توقف تمام Queueها با queue:pause --all و رابط کاربری جدید php artisan dev.

قابلیت Pause سراسری، مدیریت Queueها را در زمان Deploy و Incident ساده‌تر می‌کند، زیرا می‌توان پردازش Jobهای جدید را متوقف کرد بدون اینکه الزاماً کل اپلیکیشن را وارد Maintenance Mode کرد. Jobهای جدید نیز حذف نمی‌شوند و پس از Resume شدن Queue می‌توانند پردازش شوند.

از طرف دیگر، Terminal UI جدید artisan dev اجرای هم‌زمان سرویس‌هایی مانند Server، Queue و Vite را منظم‌تر می‌کند و امکاناتی مانند Tab، جست‌وجو، Restart و مدیریت Log را در اختیار توسعه‌دهنده قرار می‌دهد.

برای تیم‌هایی که روی پروژه‌های Laravel بزرگ‌تر کار می‌کنند، این تغییرات شاید در ظاهر کوچک باشند، اما در عملیات روزمره توسعه و Deployment می‌توانند زمان و خطاهای غیرضروری را کاهش دهند.

سوالات متداول

Laravel 13.25 چه زمانی منتشر شد؟

Laravel 13.25.0 در 11 آگوست 2026 منتشر شد.

چگونه تمام Queueهای Laravel را متوقف کنیم؟

در Laravel 13.25 می‌توانید از دستور زیر استفاده کنید:

php artisan queue:pause --all

این دستور تمام Queueها را روی Connectionهای مختلف Pause می‌کند.

چگونه تمام Queueهای Laravel را دوباره فعال کنیم؟

برای Resume کردن Queueهای متوقف‌شده به‌صورت سراسری از دستور زیر استفاده کنید:

php artisan queue:resume --all

اگر Queueای قبل از Pause سراسری به‌صورت اختصاصی متوقف شده باشد، resumeAll() آن Pause اختصاصی را حذف نمی‌کند.

آیا queue:pause --all اپلیکیشن Laravel را Maintenance می‌کند؟

خیر. این دستور Queueها را متوقف می‌کند و به‌تنهایی کل اپلیکیشن را وارد Maintenance Mode نمی‌کند. بنابراین درخواست‌های HTTP می‌توانند همچنان توسط برنامه پردازش شوند.

آیا Jobهای جدید هنگام Pause شدن Queue از بین می‌روند؟

خیر. Jobها همچنان می‌توانند Dispatch شوند و در Queue باقی بمانند. Workerها پس از Resume شدن دوباره می‌توانند آن‌ها را پردازش کنند.

آیا Job در حال اجرا با queue:pause --all متوقف می‌شود؟

خیر. Pause کردن Queue از دریافت Jobهای جدید جلوگیری می‌کند و Jobی که از قبل در حال اجراست می‌تواند کار خود را به پایان برساند.

آیا Laravel 13.25 متد PHP برای توقف همه Queueها دارد؟

بله. می‌توانید از Queue::pauseAll() و برای فعال‌سازی مجدد از Queue::resumeAll() استفاده کنید.

php artisan dev در Laravel 13.25 چه تغییری کرده است؟

این دستور به یک Terminal UI جدید مجهز شده که Processهای توسعه را در Tabهای جداگانه مدیریت می‌کند و امکاناتی مانند جست‌وجو، پاک کردن Log و Restart Process را ارائه می‌دهد.

آیا artisan dev از چند حالت خروجی پشتیبانی می‌کند؟

بله. حالت‌های tabs، stream و inline در نظر گرفته شده‌اند. حالت Tabs به‌صورت پیش‌فرض استفاده می‌شود و با --stream می‌توان خروجی را به شکل Stream نمایش داد.

آیا برای artisan dev جدید به Node.js خاصی نیاز است؟

مسیر جدید مبتنی بر @laravel/multiplex به Node.js نسخه 22.13 یا بالاتر نیاز دارد. در Windows نیز در حال حاضر Laravel از concurrently استفاده می‌کند.

آیا Laravel 13.25 شامل قابلیت‌های دیگری هم می‌شود؟

بله. این نسخه علاوه بر Queue و artisan dev، تغییراتی در Image API، Eventهای Queue، Timeout Jobها، Responseها، Schema Builder و Requestها دارد.

آیا ارتقا به Laravel 13.25 برای پروژه Production ضروری است؟

ضروری بودن ارتقا به شرایط پروژه بستگی دارد. اگر از Laravel 13 استفاده می‌کنید، قابلیت‌های جدید Queue و artisan dev می‌توانند مفید باشند، اما بهتر است قبل از ارتقای Production، سازگاری وابستگی‌ها و فرآیند Deploy را در محیط آزمایشی بررسی کنید.