لاراول ۱۳.۱۸: متریکهای Worker و خاموشی نرم
خلاصهٔ کاملتر
لاراول ۱۳.۱۸.۰ یه نسخهٔ نگهداریمحوره که چند قابلیت کوچیک ولی کاربردی رو کنار یه سری رفع باگ آورده. به گفتهٔ Laravel News مهمترین تغییر مربوط به صفهاست: رویداد WorkerStopping حالا دو تا مقدار جدید داره.
متریکهای Worker: فیلد jobsProcessed تعداد جابهایی که یه worker تو طول عمرش پردازش کرده رو نگه میداره و lastJobProcessedAt هم زمان (microtime) آخرین جابه. هردوش چه worker عادی خاموش شه چه kill شه پر میشن، پس میتونی موقع خروج daemon متریک بفرستی بدون اینکه خود حلقهٔ جاب رو دستکاری کنی.
use Illuminate\Queue\Events\WorkerStopping;
Event::listen(function (WorkerStopping $event) {
$event->jobsProcessed; // int|null
$event->lastJobProcessedAt; // microtime, null اگه چیزی پردازش نشده
});خاموشی نرم schedule:work: این دستور حالا سیگنالهای SIGINT و SIGTERM و SIGQUIT رو میگیره؛ با گرفتن سیگنال دیگه اجرای زمانبندی جدید شروع نمیکنه و صبر میکنه schedule:run در حال اجرا تموم شه. این دقیقاً همون رفتار queue:work ـه و تو محیطهایی مثل Kubernetes که pod موقع خاموشی SIGTERM میگیره خیلی به کار میاد.
اولویت دستورهای dev: دستورهایی که برای artisan dev ثبت میشن حالا میدونن از کجا اومدن (اپلیکیشن، پکیج vendor یا خود فریمورک) و با همون اولویت ثبت میشن، پس override های خودت همیشه برندهست. ضمناً artisan dev با --kill-others-on-fail اجرا میشه تا اگه یه پروسه خطا داد بقیه هم متوقف شن.
رفع باگها: توابع Number::forHumans() و Number::abbreviate() و Number::fileSize() دیگه با ورودی INF یا NAN کرش نمیکنن. چند رفع باگ دیگه هم رو کش درخواستهای HEAD، جابهای debounce شده و برخورد لیبلها تو TaggedCache انجام شده.
نکات کلیدی:
- رویداد WorkerStopping حالا jobsProcessed و lastJobProcessedAt رو داره
- schedule:work سیگنال خاموشی رو میگیره و کار در حال اجرا رو تموم میکنه
- ثبت اولویتدار دستورهای dev و فلگ --kill-others-on-fail برای artisan dev
- رفع کرش Number با INF/NAN و چند باگ کش و scheduler




