آموزش کار با 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) و رایت کنید. این مقادیر بصورت خودکار سریال شده و مجددا از حالت کد شده خارج می شوند.

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

ذخیره اطلاعات (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 استفاده مفید را برده باشید.

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

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

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. قاسم ۱۶ تیر ۱۴۰۰

    خیلی مفید بود ممنون واقعا

    پاسخ
    1. حسن شفیعی ۱۶ تیر ۱۴۰۰

      خوشحالیم که مفید واقع شده.
      موفق باشید.

      پاسخ
دوره های آموزشی