پرش به محتویات

چطور رویدادهای بله را به‌صورت دوره‌ای دریافت کنیم؟

getUpdates دقیقاً یک درخواست به بله می‌فرستد و آرایهٔ نتیجه را برمی‌گرداند. پکیج پردازشگر دائمی، حلقهٔ بی‌پایان، صف، پردازش‌کننده یا نگه‌داری وضعیت برای offset ندارد.

use Sajaddp\Bale\Facades\Bale;

$updates = Bale::getUpdates([
    'offset' => $nextOffset,
    'limit' => 100,
    'timeout' => 30,
]);

شناسهٔ ادامه را در برنامه نگه دارید

پس از پردازش موفق هر رویداد، برنامهٔ شما باید مقدار offset بعدی را در محل ذخیره‌سازی مناسب نگه دارد. این تصمیم به شیوهٔ پردازش، تحمل خطا و زیرساخت برنامه بستگی دارد؛ لاراول بله هیچ وضعیت پنهانی نگه نمی‌دارد.

foreach ($updates as $update) {
    // پردازشی که تکرار آن بی‌خطر باشد در برنامهٔ خودتان

    $nextOffset = $update['update_id'] + 1;
}

// $nextOffset را فقط پس از رعایت سیاست پردازش برنامهٔ خودتان ذخیره کنید.

مهلت دریافت و فرصت اضافی اچ‌تی‌تی‌پی

گزینهٔ timeout برای دریافت طولانی‌مدت به بله می‌رود. لاراول بله برای زمان‌انتظار اچ‌تی‌تی‌پی مهلت اضافی مناسبی می‌افزاید تا درخواست پیش از زمان مورد انتظار بله قطع نشود؛ این به‌معنای مدیریت حلقه یا تلاش مجدد توسط پکیج نیست.

برنامهٔ شما باید چرخهٔ فراخوانی، زمان‌بندی، فاصلهٔ افزایشی تلاش مجدد، ثبت گزارش و نحوهٔ توقف پردازشگر را مدیریت کند. اگر نمی‌خواهید چنین چرخه‌ای را نگه دارید، وب‌هوک در لاراول ۱۳ دریافت رویداد از سمت بله را توضیح می‌دهد.

برای بررسی وجود متدهای بله، به‌جای ساختن متد فرضی، همیشه پوشش رابط برنامه‌نویسی بله را بررسی کنید.