طراحی سایت, ساخت ربات تلگرام, آموزش php , سورس کد php ,سورس ربات تلگرام , سورس فروشگاه اینترنتی , آموزش طراحی وب

آموزش کار با Memcached در PHP


آموزش کار با Memcached در PHP

زمانی که به ذخیره سازی در اپلیکیشن های تحت وب فکر می کنیم, اولین چیزی که به ذهنمان می آید, معمولا یک دیتابیس سنتی مثل MySQL است.

استفاده از MySQL برای ذخیره سازی طولانی مدت و آنالیز داده ها بسیار عالی است, اما گزینه بهتری برای کوتاه مدت وجود دارد که Memcached است.

Memcached گزینه فوق العاده ای برای ذخیره بیت اطلاعات بین درخواست های صفحه و افزایش کارایی اپلیکیشن است. کش ها بر دو نوع Disk Cache و Memory Cache هستند که memcached از نوع کش در حافظه است.

memcached مقادیر (value) ها را به همراه کلید (key) ذخیره و مقادیر را به همراه کلید حتی بدون parse کردن کویری دیتابیس و منتظر ماندن برای آن همه فرایند, دریافت می کند. برای همین memcached باعث افزایش سرعت دریافت پاسخ (response) صفحات وب می شود و یک تجربه کاربری عالی را ایجاد می کند.

در این آموزش php قصد داریم به آموزش کار با Memcached در PHP و نحوه استفاده از آن برای افزایش عملکرد (Performance) اپلیکیشن های تحت وب بپردازیم

آموزش کار با Memcached در PHP

مقدمه کار با Memcached در PHP

Memcached بطور ساده یک سرور به همراه رابط (interface) است که به شما اجازه ذخیره اطلاعات را در حافظه (memory) می دهد.

این ابزار می تواند روی همان سروری که کدها اجرا می شود, به عنوان وب سرور اجرا شود, اما مقیاس پذیری را در صورتی بوجود می آید که نمونه ها را بین سرورهای چندگانه توزیع کنیم.

تنها چیزی که نیاز داریم, اجرای Memcached و همچنین PHP برای ارایه یک اینترفیس ساده با کتابخانه PECL است.

بر روی سیستم لینوکس Debian-based نصب آن با اجرای دستورات زیر قابل انجام است:

روی سرور و هاستینگ های مختلف Memcached نصب و فعال است که می توانید از طریق اجرا phpinfo() متوجه این موضوع بشوید.و نیازی به دستورات بالا نیست (البته در یک هاست اشتراکی معمولا دسترسی شل رو هم ندارد.)

آموزش کار با Memcached در PHP

حالا نیاز است اشاره کنیم که عملا دو کتابخانه PHP برای کار با Memcached در PHP وجود دارد.

نام کتابخانه قدیمی تر “memcache” است که یک سری قابلیت ها را ندارد. کتابخانه جدید “memcached” است که از libmemcached استفاده می کند و ترجیح می دیم از آن استفاده کنیم.

 

این اولین قدم در PHP برای اتصال به سرور است. کانکشن ها حین ارسال درخواست ها, همچنان برقرار خواهند بود که خب برای عملکرد برنامه نیاز است.

بعد لیست سرور های مورد نیاز را اضافه می کنیم. در این مثال ما از لوکال هاست و پورت پیش فرض memcached استفاده می کنیم.

حالا می توانید متغیرهای PHP را داخل memcached با  توابع ساده مبتنی بر کلیدهایی (keys) که تعریف کردید, بخوانید (read) و رایت کنید. این مقادیر بصورت خودکار سریال شده و مجددا از حالت کد شده خارج می شوند.

حتما بخوانید  آموزش HTML - کش کردن با HTML5

شما نمی توانید ریسورس ها را همانند کانکشن دیتابیس رایت کنید, اما می توانید آن ها را بصورت آرایه تبدیل و ذخیره کنید.

ذخیره اطلاعات (Data)

فرض کنید می خواهید که لیست URL های بازدیدی اخیر را به ازای هر کاربر لاگین شده ذخیره کنید.

می توانستیم از سیشن (Session) ها بهره ببریم اما این داده ها بین دیوایس های مختلف در دسترس نخواهند بود و همچنین با پاک شدن session , این اطلاعات هم از بین می روند.

حتی می توانیم از دیتابیس استفاده کنیم اما برای این نوع داده ها که برای سیستم و یا اپ ما آنقدرا هم حیاتی و مهم نیستند, زیادی کند است.

بنابراین در این شرایط ما از memcached در PHP بهره می بریم.

کش کردن

حالا زمان آن است که سرعت نتایج دیتابیس را با کش کردن در اپلیکیشن تحت وب, تقویت کنیم.

کویری های دیتابیس معمولا از بزرگترین مشکلات در فرایند پردازش سرور است, بنابراین برای جلوگیری از اجرای کویری های تکراری, با کش کردن نتایج آن ها در مموری می توانیم به یک کاراری (performance) بسیار بزرگی در اجرای برنامه دست یابیم !

ساده ترین روش, کویری زدن و ذخیره آن فقط با کلید اصلی (primary) است. معمولا بهتر است مقادیر (value) کش شده بعد از هربار آپدیت شدن آن رکورد, حذف شوند که باعث می شود که دیگر کاربران مقادیر قدیمی را به جای مقادیر جدید نبینند.

هشدارهای کار با Memcached در PHP

همانند هر تکنولوژی دیگری, اینجا هم یک سری محدودیت ها و باقی موارد وجود دارد که نیاز به توجه دارد :

  • حداکثر طول یک کلید (key) برابر ۲۵۰ بایت است. نام کلیدها را ساده و کوتاه قرار بدید.
  • حداکیز مقدار (value) پیش فرض حدود ۱مگابایت است. پس اینجا محل مناسبی برای ذخیره مقادیر بزرگ نیست.
  • محل ذخیره سازی Memcached برای خواندن(read) و نوشتن(write) قفل نیست درحالی که امکان قفل کردن رکوردهای دیتابیس وجود دارد (با محدود کردن privilege) . فقط آگاه باشید که هر درخواست  در هر زمان می تواند این مقادیر را آپدیت کند.
  • اطمینان حاصل کنید که سرورهای Memcached شما فضای رم کافی برای ذخیره سازی را دارند.

 

مراحل بعدی کار با Memcached در PHP

کارهای بیشتری می توانید با memcached انجام بدید:

  • مقادیر کش شده می توانند timeout داشته باشند. این مورد زمانی کاربردی است که داده ها بعد از یک مدت زمانی بصورت اتوماتیک حذف شوند (بسیار مهم)
  • متدهای ساده increment و decrement برای نگهداری شمارنده های سریع بین درخواست ها کاربرد دارند.
  • با پیکربندی صحیح memcached می توانید داده را بین اپلیکشن های ساخته شده با زبان های دیگر مثل اپ های اندروید و IOS به اشتراک بگذارید.

 

حتما کار با Memcached در PHP را یاد بگیرید و از آموزش بالا نهایت استفاده را ببرید. در یک سناریوی درست, Memcached برای افزایش حداکثری کارایی وب اپلیکیشن, واقعا بسیار مفید است.البته سیستم های کش کردن مثل apc و redis هم وجود دارند که از قدیمی ترین ها Memcached است که عالی جواب می دهد.

امیدوارم از آموزش کار با Memcached در PHP استفاده مفید را برده باشید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

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

دیدگاه کاربران

avatar

دانلود رایگان (هدیه ویژه)

کتاب آموزش زبان برنامه نویسی PHP را دانلود و همین امروز یادگیری را شروع کن و به جمع برنامه نویسان ملحق شو ;)

دانلود رایگان کتاب

سورس فروشگاهی دیجی کالا

بخش کاربران

هنوز عضو نیستید ؟ کلیک کنید

مجوزهای ما

logo-samandehi

دانلود کتاب

عضویت رایگان خبرنامه

تخفیف 150 هزار تومانی برای سورس فروشگاهی دیجی کالا تا پایان خردادماه - کد تخفیف : np150
ثانیه
دقیقه
ساعت
روز
خرید محصول