پرش به مطلب اصلی

⚡ درخواست‌های غیرهمزمان (غیر مسدودکننده)

به طور پیش‌فرض، ارسال یک درخواست API به Bale Bot API یک درخواست همزمان خواهد بود و اجرای اسکریپت را تا زمانی که پاسخ از سرور دریافت شود یا پس از 60 ثانیه به دلیل Timeout خطای Guzzle ایجاد شود، مسدود خواهد کرد. اما می‌توان درخواست غیرهمزمان (غیر مسدودکننده) را با فراخوانی متد setAsyncRequest(true) قبل از ارسال هر درخواست API یا در زمان اولیه‌سازی کتابخانه ارسال کرد:

ارسال درخواست‌های خاص به صورت غیرهمزمان

زمانی که در حال ساخت درخواست API هستید، تنها کافی است متد setAsyncRequest را فراخوانی کنید و true را به آن پاس دهید. اکنون ارسال درخواست باعث مسدود شدن اجرای اسکریپت نخواهد شد. به همین ترتیب، اگر بخواهید روند را برعکس کنید، کافی است false را پاس دهید (تا یک درخواست خاص API همزمان باشد).

# Standalone
$bale
->setAsyncRequest(true)
->sendPhoto(['chat_id' => 'CHAT_ID', 'photo' => 'path/to/photo.jpg']);

# Laravel
Bale::setAsyncRequest(true)
->sendPhoto(['chat_id' => 'CHAT_ID', 'photo' => 'path/to/photo.jpg']);

ارسال تمام درخواست‌های API به صورت غیرهمزمان

شما می‌توانید تمام درخواست‌های API را به صورت غیرهمزمان (غیر مسدودکننده) ارسال کنید، کافی است تغییرات لازم را طبق دستورالعمل‌های زیر اعمال کنید.

مستقل

فقط کافی است پارامتر دوم را با مقدار boolean true تنظیم کنید. به طور پیش‌فرض برابر با false است.

use EFive\Bale\Api;

$bale = new Api('BOT TOKEN', true);

لاراول

برای ارسال تمام درخواست‌های API به صورت غیرهمزمان در Laravel، فقط کافی است گزینه async_requests را به true در فایل پیکربندی bale.php تنظیم کنید. همچنین می‌توانید مقدار آن را در متغیر env به نام BALE_ASYNC_REQUESTS تنظیم کنید.

اگر می‌خواهید تمام درخواست‌ها غیرهمزمان و فقط یک درخواست خاص همزمان باشد، می‌توانید قبل از ارسال درخواست API، متد setAsyncRequest(false) را فراخوانی کنید. برای مثال، بالا را مشاهده کنید.

این به این معنی است که ما درخواست را ارسال کرده‌ایم و منتظر پاسخ نمی‌مانیم. شیء BaleResponse که باز می‌گردد، برای کد وضعیت HTTP مقدار NULL خواهد داشت.