لاراول ۱۳.۳۱: شمارش کل جابهای صف با یه متد
خلاصهٔ کاملتر
تیم لاراول نسخهٔ ۱۳.۳۱.۰ رو منتشر کرد. به گفتهٔ نویسنده مهمترین چیزهای این نسخه یه متد تازه برای شمارش کل جابهای صف، یه رویداد جدید برای قطعشدن جاب، پشتیبانی chaperone از مدلهای pivot و چند اصلاح ریز و درشت دیگهست.
متد totalSize() که Jack Bayliss فرستاده، به این سؤال جواب میده که «الان روی این کانکشن صف در مجموع چندتا جاب دارم؟». قبلش باید سهتا عدد رو دستی جمع میزدی.
// Before
Queue::totalPendingSize() + Queue::totalDelayedSize() + Queue::totalReservedSize();
// After
Queue::totalSize();رویداد JobInterrupted هم از همین مشارکتکنندهست و وقتی ورکر یه جاب دارای قرارداد Interruptible رو قطع میکنه شلیک میشه. یعنی میتونی بهش گوش بدی و هر پاکسازی یا لاگی که لازمه رو همونجا انجام بدی، به جای اینکه قطعشدن جاب بیصدا رد بشه.
تغییر بعدی از Caleb White ـه: chaperone (یعنی همون ترفندی که موقع هیدریتشدن رابطه، مدل والد رو روی فرزندها مینشونه تا دوباره از دیتابیس خونده نشه) حالا روی BelongsToMany با مدل pivot سفارشی هم کار میکنه. اگه مدل pivot سفارشی نداده باشی، صدا زدن chaperone() هیچ کاری نمیکنه و بیخطره.
public function tags(): BelongsToMany
{
return $this->belongsToMany(Tag::class)
->using(PostTagPivot::class)
->chaperone(declaring: 'post', related: 'tag');
}بقیهٔ نسخه هم پر از چیزهای کاربردیه: متد devServerUrl() روی کلاس Vite که آدرس سرور توسعه رو برمیگردونه، متدهای تازهٔ once برای فیکهای Mail و Notification مثل assertSentOnce() و assertSentToOnce() که جای نوشتن assertSentTimes(..., 1) رو میگیرن، درایور صف Redis که حالا با کلاستر سازگار شده، رفع نشت حافظه توی Http Client، و اصلاح lazy() و lazyById() که limit() و offset() رو نادیده میگرفتن.
نکات کلیدی:
- Queue::totalSize() جای جمع دستی totalPendingSize() و totalDelayedSize() و totalReservedSize() رو میگیره
- رویداد Illuminate\Queue\Events\JobInterrupted موقع قطعشدن جابهای Interruptible شلیک میشه
- chaperone() روی BelongsToMany با مدل pivot سفارشی کار میکنه و بدون اون یه no-op ـه
- متدهای assertSentOnce، assertQueuedOnce، assertSentToOnce و assertSentOnDemandOnce به فیکهای Mail و Notification اضافه شدن
- درایور صف Redis cluster-safe شد و نشت حافظهٔ Http Client برطرف شد
- lazy() و lazyById() دیگه limit() و offset() رو نادیده نمیگیرن




