مهدی
1 سال پیش توسط مهدی مطرح شد
4 پاسخ

تولید عدد رندوم برای کاربران

سلام دوستان
من میخوام کاربران موقع ثبت نام یه کد عضویت عددی هم داشته باشن و توی تیبل کاربران ذخیره بشه

برای اینکار از کد زیر استفاده کردم:

    public function generateApplicantId()
    {
        $candidatesData = User::pluck('applicant_id')->toArray();
        do {
            $applicant_id = random_int(1000000000, 9999999999);
        } while (in_array($applicant_id, $candidatesData));
        return $applicant_id;
    }

ولی وقتی تعداد کاربران زیاد میشه زمان پردازشی زیادی رو میطلبه تا عمل بررسی یونیک بودن رو انجام بده
ضمنا نمیخوام ازتابع کمکی strpad استفاده کنم و id کاربر رو با تعدادی 0 پشت سرش قرار بدیم چون نیاز داریم عدد تولید شده بصورت افزایشی نباشه
میخواستم بدونم راهکار بهتری کسی سراغ داره ؟


ثبت پرسش جدید
سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 1 سال پیش مطرح شد
2

خوب یک کوئری با چه حجمی از اطلاعات؟
یک کوئری که فقط یک ستون و یک ردیف را بررسی میکند
یا یک کوئری که اطلاعات یک ستون را واکشی میکند و وارد رم میکند تا پردازش in_array انجام شود.
همین موضوع سیستم شما را هر چه تعداد کاربران بیشتر شود کند تر خواهد کرد.


سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 1 سال پیش مطرح شد
0

سلام.
چرا همه کد های ایجاد شده رو دریافت میکنید بعد با in_array چک میکنید که این کد وجود دارد؟
خوب روش بهتر این است همین کار را با کوئری ساده select انجام دهید. اگر این کد وجود داشت که یعنی کد تکراری است و اگر نبود یعنی کد جدید شما یکتا است.
شانس رخ دادن چنین چیزی البته 1 به 1000000000 است. ولی باز هم به این صورت چک کنید خیلی سریع برنامه اجرا می شود.


مهدی
تخصص : توسعه دهنده
@mehdi539 1 سال پیش مطرح شد
0

سلام هادی عزیز
دقیقا به همون شکلی که شما اشاره کردین تغییر دادم ولی من بیشتر هدفم این بود که تحت هر شرایطی فقط و فقط یک کوئری به بانک زده بشه
که فکر میکنم با این حالت اتفاقا همون یک کوئری در بدبینانه ترین حالتش زده میشه


سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 1 سال پیش مطرح شد
2

خوب یک کوئری با چه حجمی از اطلاعات؟
یک کوئری که فقط یک ستون و یک ردیف را بررسی میکند
یا یک کوئری که اطلاعات یک ستون را واکشی میکند و وارد رم میکند تا پردازش in_array انجام شود.
همین موضوع سیستم شما را هر چه تعداد کاربران بیشتر شود کند تر خواهد کرد.


مهدی
تخصص : توسعه دهنده
@mehdi539 1 سال پیش مطرح شد
0

کاملا درسته
ممنونم ازتون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام