💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ سپهر سلیمی مهر
ایجاد job برای داده‌های json
محمدرسول اصغری حل شده توسط محمدرسول اصغری

سلام وقت همگی بخیر من یک api دارم که بهش ریکوئست میدم و مثلا تعداد 300 مشتری رو به من به صورت json بر میگردونه و من میخوام دونه دونه برای این مشتریان با توجه به ماهیت و نوع مشتری و ... که دارند یک سری پردازش انجام بدم 

حالا سوال من این هست که اولا چجوری هر روز در لاراول یک ریکوئست به این api در یک ساعت مشخص بفرستم (روش قبلی که استفاده میکردم این بود که با استفاده از cron job ریکوئست میفرستادم) حالا دوست دارم بدونم این کار رو چجوری داخل لاراول انجامش بدم که هم به تایم اوت نخورم و هم اصولی باشه 

سوال دوم من این هست که وقتی لیست 300 تا مشتری رو گرفتم چجوری برای تک تکشون یک job ایجاد کنم که در بازه‌های مشخص اون پردازش مورد نظر من رو انجام بده و تایم اوت نخورم بازم سر این 300 تا مشتری

اگر دقیقا فرایندم رو بخوام بگم خدمتتون 
بنده یه api دارم که توش حدودا 22000 رو دیتارو برمیگردونه 
البته قابلیت صفحه بندی و مشخص کردن تعداد رو داره 
مثلا میتونم بگم ۱۰۰ تا رکورد برگردون از صفحه x 
اینجوری من باید ۲۰۰ بار تقریبا ریکوئست بفرستم 
و تو هر بار برگشت این ۱۰۰ تارو تو دیتابیس ذخیره کنم

اولین سوالم این هست که چجوری اینارو تو دیتابیس سیو کنم که به تایم اوت نخورم

دومین سوالم این هست که برای اینکه این ۲۰۰ تا ریکوئست رو بفرستم چه راهکاری دارید ؟ اگه قراره از صف استفاده بکنم رو چه اصولی باشه

ممنون میشم دوستانی که در این زمینه تجربه داشتند راهنمایی بفرمایند

سپهر سلیمی مهر ۳۰ بهمن ۱۴۰۲، ۰۸:۴۰

درود سپهر عزیز

 

برای اینکه بتونید توی لاراول به صورت خودکار در یک ساعت مشخص ریکوئست بفرستید، می‌تونید از قابلیت Task Scheduling تو لاراول استفاده کنید. این قابلیت به شما اجازه می‌دهد که task هارو  بر اساس زمان‌بندی مشخصی اجرا کنید.

به طور مثال: 

اول یه command ایجاد بکنید و توی متد handle اش کد مربوط به task تون رو مینویسید مثل تکه کد زیر 

protected function schedule(Schedule $schedule)
{
    $schedule->command('your-command:name')->dailyAt('13:00');
}

 

در نهایت هم command تون رو به app/console/kernel.php اضافه میکنید 

 

برای سوال دوم تون هم برای اینکه برای هر مشتری بتونید یه job ایجاد کنید باید از queue استفاده کنید و برای اینکه به time out هم بر نخورید میتونید از متد insert توی Query builder استفاده کنید به شکل زیر:

DB::table('customers')->insert($customers);

 

 

امیدوارم این موارد مفید باشه 

موفق باشید

بهترین پاسخ
محمدرسول اصغری ۰۱ اسفند ۱۴۰۲، ۱۵:۴۷