جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.


×
×
درگذشت تلخ و جانسوز مهسا امینی را به تمام مردم ایران تسلیت عرض میکنیم؛ امید داریم که من بعد شاهد این قسم وقایع تلخ و ناگوار در کشور عزیزمان ایران نباشیم.
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

استفاده از هلپر در فایل های کانفیگ لاراول


3
0
707

سلام دوستان من قصد داشتم از هلپری که واسه تنظیمات نوشتم داخل فایل های فولدر کانفیگ استفاده کنم که متاسفانه نمیشه البته ی راهی برای این کار وجود داره که میشه به این صورت مقادیر رو در AppServiceProvider تعیین کنیم

config([
            'app.name' => getSetting('app_name'),
            'sms.drivers.kavenegar.apiKey' => getSetting('kavenegar_api'),
            'sms.drivers.kavenegar.from' => getSetting('number'),
        ]);

ممکنه که من ایتم های زیادی داشته باشم پس باید برای هرکدوم به همین صورت کدشو بنویسم, بنظر خودم که این کار اشتباهه ولی تا الان راه حل دیگه رو پیدا نکردم متاسفانه که اگه لطف کنید راه حل مناسبی رو توضیح بدید ممنون میشم

و سوال دوم در رابطه با نحوه کش کردن داده ها, همونظور که گفتم ممکنه من ایتم های زیادی داشته باشم مثلا 30 تا , خب حالا هروقت سایت بالا میاد 30 کوئری برای دریافت مقادیر اجرا میشه که اصلا خوب نیست! در اینجا میشه از کش کردن داده ها استفاده کرد.

این هلپری هست که برای تنظیمات نوشتم:

if (!function_exists('getSetting')) {
    /**
     * @param $key
     * @return mixed
     */
    function getSetting($key)
    {
        return Setting::where('name',$key)->value('val');
    }
}

اگه به این صورت تغیرش بدم, درسته؟

function getSetting($key)
  {
        if (Cache::has('setting_'.$key)) {
            return Cache::get('setting_'.$key);
        }

        $query = Setting::where('name', $key)->first();
        Cache::forever('setting_'.$key, $query->val);
        return $query->val;
    }
تکنولوژی لاراول
سوال شده در مجتبی دلشاد
275 امتیاز

1
ببینید هر پروژه ای (مثل پروژه ی شما) یک سری اطلاعات و تنظیمات ثابت داره که باید توی یک فایلی با پسوند .conf نوشته بشن و در موقع نیازش با تابع conf() ازشون استفاده بشه. مشابه همون چیزی که شما خودت نوشتی (تیکه کد اولت). سوال من اینجاست که 1) چرا فکر می کنی این کار اشتباهه؟ 2) چرا میخوای بری سراغ کش کردن یک همچین دیتایی؟ ــ سعید مرادی در 4 سال قبل
1
@سعید.مرادی احساس می کنم که شما درست متوجه نشدی که ایشون داره چی کار می کنه. ایشون یک هلپر نوشته ظاهرا به اسم getSetting که کارش خوندن فایل های کانفیگ هست. حالا ظاهرا می خواد توی خود اون فایل ها، از همین تابع (یا به زبان خود سوال کننده از همین «هلپر») استفاده کنه که خب در دسترس نیست. ــ سجاد شفی زاده در 4 سال قبل

@سعید.مرادی در رابطه با اشتباه بودن اینکار مطمئن نیستم اما چون تا بحال هر پروژه ای رو دیدم واسه تنظیمات همچین کاریو نکرده(کد اول)...و سوال دوم, چون بنظرم کش کردن اون دیتا بهتر باشه,فرض کنید 10 ایتم تنظیمات داریم با هر بار لود صفحه 10 کوئری برای دریافت مقادیرشون اجرا میشه و اگه همون مقادیر رو کش کنیم سریع تر میتونیم دیتا رو دریافت کنیم و نیازی به اجرای دوباره اون کوئری ها نیست ــ مجتبی دلشاد در 4 سال قبل

@سجاد.شفی.زاده.★ نه! تنظیمات در دیتابیس ذخیره میشن و این هلپر هم بر اساس اون key که بهش داده میشه مقدارشو از دیتابیس و جدول تنظیمات در یافت میکنه ــ مجتبی دلشاد در 4 سال قبل
1
ضمنا، از نظر من این نیازی که شما داری (آقای مجتبی دلشاد)، نیاز درستی نیست. چراکه فایل های کانفیگ، حاوی یک سری اطلاعات ثابت و از جنس تنظیمات هستن، چیزی نیستن که تو لازم داشته باشی از جایی دیگه بخونی این دیتا رو بعد بزاریش توی یک فایل .config. باید همه چیز به صورت hardCode توی فایل های .conf نوشته بشه. ــ سجاد شفی زاده در 4 سال قبل
2
آها که اینطور ..! پس تنظیمات رو بردی سمت دیتابیس .. من توی یکی دو پروژه دیگه هم دیدم یک همچین معماری رو؛ ولی دلیلش رو متوجه نشدم، چرا دیتای مرتبط با تنظیمات پروژه رو بردی سمت دیتابیس؟ مگه همون فایل های .conf چه مشکل یا محدودیتی دارن؟ ــ سجاد شفی زاده در 4 سال قبل

@سجاد.شفی.زاده.★ واقعیتش این اولین پروژ کاملی هست که دارم با لاراول کار میکنم و توی پروژه های کوچیک دیگه خیلی از قسمت ها مثل همین تنظیمات رو نداشتم...پس نظرتون اینه از دیتابیس استفاده نکنم و داخل یه فایل کانفیگ دیتا رو داشته باشم...اتفاقا همین مورد رو توی یه پروژه اوپن سورس دیدم اما اونجا هم داخل یه فایل کانفیگ ذخیره میشد و هم در دیتابیس ــ مجتبی دلشاد در 4 سال قبل
3
این کدی که برای کش کردن اطلاعات (جدول تنظیمات) با کلاس Cache نوشتی خب درسته. یک راه ساده تری هم هست که engine اون جدولی که در دیتابیس ساختی و اطلاعات تنظیمات رو داری توش نگهداری می کنی رو به memory تغییر بدی (الان احتمالا innodb) هست. وقتی اون تغییر رو انجام بدی، تمام دیتای اون جدول همیشه روی Ram قرار می گیره و یه جورایی برای همیشه کش هست :-) ــ ساناز رضایی در 4 سال قبل

@ساناز.رضایی ممنونم ولی فکر کنم دیگه بیخیال دیتابیس شدم با توجه به توضیحات دوستان ذخیره در فایل کانفیگ مناسب تره ــ مجتبی دلشاد در 4 سال قبل
1
بله من هم موافقم که ذخیره اطلاعات در فایل مناسب تره. فقط گفتم اون نکته رو هم بگم که بجای استفاده از کلاس Cache در لاراول و درگیر شدن با توابع ::has() و ::get()، میشه به راحتی انجین جدول رو به memory تغییر داد و برای همیشه اطلاعات اون جدول رو روی رم قرار داد و اصطلاحا دیتا رو کش کرد. ــ ساناز رضایی در 4 سال قبل
1
@ساناز.رضایی نکته هوشمندانه (و گاها کاربردی) هست استفاده از انجین memory برای نگهداری دیتا روی رم. ولی خب نکته اینجاست که «کش کردن» فقط به معنای نگهداری دیتا بر روی Ram سرور نیست که؛ اره درسته اغلب توی Ram کش میکنن دیتا رو، ولی خب استفاده کلاس Cache در لاراول این اجازه رو به شما میده که انتخاب کنی میخوای روی Ram کش کنی، یا توی فایل! همینطور این کمک رو میکنه که وقتی به دیتا نیازی نداشتی از روی Ram حذفش کنی و بیخودی Ram رو اشغال نگه نداری، در حالی که انجین memory همیشه و در همه حالات روی Ramه! ــ سجاد شفی زاده در 4 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


وب سایت لام تا کام جهت نمایش استاندارد و کاربردی در تمامی نمایشگر ها بهینه شده است.

تبلیغات توضیحی


اقتصاد رفتاری بررسی روشهای تاثیرگذار بر رفتار کاربران
مردم همیشه به دنبال چیزهایی هستند که نمیتونن اونارو داشته باشن، و با به سادگی نمیتونن اون رو به دست بیارن.

تبلیغات تصویری


محک