زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه

ماژول MemCache رابط های رویه ای و شی گرا را فراهم می کند تا مکانیزم ذخیره سازی Memcached را فراهم کند. MemCache یک daemon ذخیره سازی بسیار موثر است که به طور خاص طراحی شده برای کاهش بار در پایگاه داده برای برنامه های کاربردی وب پویایی بالا، طراحی شده است.

ماژول MemCache همچنین یک جلسه جلسه را فراهم می کند. بیشتر اطلاعات دقیق درباره Memcached را می توان در وب سایت memcached.org پیدا کرد

در اصل، توصیف نصب و تنظیمات در روسیه در حال حاضر آماده است و شما می توانید آن را بخوانید.

نگه داشتن به دلیل نگه داشتن در حافظه پنهان شما می توانید هر نوع داده ها: هر دو متغیر و اشیاء، و آرایه ها، اما نه منابع!

اگر هر جسم دارای یک ویژگی در ترکیب خود باشد - یک منبع، مانند یک اتصال پایگاه داده، یا شامل یک شی دیگر با چنین خواص، پس از آن این وضعیت باید به طور جداگانه پردازش شود، به عنوان مثال، از روش __sleep () که در آن این منبع نیاز دارد، بیش از حد پردازش می شود به "کشتن" و روش __wakeup () که در آن این منبع باید احیا شود.

در واقع، تمام این روش ها را می توان به 3 گروه تقسیم کرد:

  1. کار با ارزش ها
  2. کار با سرورها و اتصالات
  3. دریافت اطلاعات

کار با ارزش ها

روش های این گروه به شما اجازه می دهد تا موارد زیر را انجام دهید:

  • مقادیر را تنظیم کنید
  • این مقادیر را حذف کنید
  • این مقادیر را جایگزین کنید
  • با این مقادیر تماس بگیرید
  • مدیریت طول عمر ارزش ها

یک جفت روش خاص برای افزایش و کاهش مقادیر عدد صحیح.

memcache :: set ()
memcache :: اضافه کردن ()

به شما اجازه می دهد مقدار را تنظیم کنید، فشرده سازی و طول عمر را برای این مقدار تنظیم کنید. تنها تفاوت در رفتار این روش ها این واقعیت است که روش MemCache :: افزودن - اگر مقدار با چنین کلید قبلا نصب شده باشد، False را بازگردانید.

بول memcache :: اضافه کردن
بول memcache :: تنظیم (رشته $ کلید، مخلوط $ var [، int $ پرچم [، int $ expire]])

  • string $ key - کلید کلیدی با استفاده از آن ما ارزش را مدیریت می کنیم.
  • مخلوط $ var - value.
  • ثابت
اتصال ("Localhost"، 11211، 30)؛ $ cache-\u003e اضافه کردن ("myfirst"، 1000، memcache_compressed، 15)؛ $ Cache-\u003e Set ("MySecond"، 2000، memcache_compressed، 15)؛

memcache :: دریافت ()

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

شما می توانید مجموعه ای از کلید های مقادیر را منتقل کنید، سپس Memcache :: دریافت یک آرایه را نیز برگرداند، آن را شامل جفت های یافت شده از مقدار کلید.

هشدارها

اگر اسلش معکوس در نام کلیدی وجود داشته باشد، سپس نتایج کار غیر قابل پیش بینی خواهد بود!

Memcached و برخی از زخم ها: بر اساس برخی از داده ها، او (گاهی اوقات) خطاهای سرریز بافر مستعدکه از زمان به زمان منجر به بازنویج داده های [جزئی] می شود و بنابراین، ساختارهای غیرمنتظره را غیر ممکن می سازد، فراموش نکنید که اگر به عنوان یک نتیجه از آرایه یا memcache نتیجه حاصل می شود، بررسی کنید، Bool Bool را به dobule یا طولانی، به این معنی است که اشتباه رفت.

رشته memcache :: دریافت. (رشته $ کلید [، int & $ flags])
آرایه. memcache :: دریافت. (آرایه $ کلید [، آرایه و پرچم های $])

  • string $ key کلید کلیدی یا مجموعه ای از کلیدها است که ارزش آنها باید به دست آید.
  • int $ پرچم - هدف از این پارامتر یک راز برای من است. من سعی کردم از مقادیر عدد صحیح استفاده کنم، اما این هیچ تاثیری نداشت. بله، و مثالها عمدتا بدون استفاده از آن داده می شوند، که از آن من نتیجه گرفتم: شما می توانید کاملا بدون آن کار کنید :)
اتصال ("Localhost"، 11211، 30)؛ $ cache-\u003e اضافه کردن ("myfirst"، 1000، memcache_compressed، 15)؛ $ Cache-\u003e Set ("MySecond"، 2000، memcache_compressed، 15)؛ print_r ($ cache-\u003e دریافت (آرایه ("myfirst"، "mysecond"))؛

نتیجه:

آرایه (\u003d\u003e 1000 \u003d\u003e 2000)

memcache :: delete ()

مقدار را از حافظه پنهان حذف کنید.

اظهار نظر:

این روش همیشه کار نمی کند (بستگی به نسخه نرم افزار)! در پایان صفحه، مواردی وجود دارد که Memcache :: حذف کار، و زمانی که نه.

خوب، از گزینه های پایدار تنها برای بازنشانی ارزش های غیر ضروری باقی می ماند:

$ Cache-\u003e Set ("سه"، null)؛

فقط منهای - کلید در این مورد هیچ جا نمی رود

رشته memcache :: حذف (String $ key [، int $ timeout \u003d 0])

  • string $ key مقدار کلیدی است که می خواهید حذف کنید.
  • int $ timeout - این پارامتر نیز منسوخ شده و پشتیبانی نمی شود، به طور پیش فرض 0 ثانیه است. از این گزینه استفاده نکنید.

memcache :: replace ()

ارزش موجود را بازنویسی کنید.

MemCache :: جایگزین () باید جایگزین شود هیچ ارزش. در صورتی که مقدار با چنین کلید وجود ندارد، Memcache :: جایگزین () بازگشت نادرست. در غیر این صورت، memcache :: replace () رفتار مشابه memcache :: set (). شما همچنین می توانید از تابع memcache_replace () استفاده کنید

رشته memcache :: جایگزین (رشته $ کلید، مخلوط $ var [، int $ پرچم [، int $ expire]])

  • string $ key کلید کلیدی است که ارزش آن باید جایگزین شود.
  • مخلوط $ var - ارزش جدید.
  • iNT $ پرچم - پرچم، که مشخص شده است، برای استفاده از فشرده سازی (در اینجا و نیاز به zlib) برای ارزش ذخیره شده، شما می توانید از ثابت استفاده کنید
  • iNT $ EMPIRE - طول عمر ارزش (کش). اگر صفر باشد، به طور نامحدود. شما همچنین می توانید از یک تمبر زمان یا تعداد ثانیه استفاده کنید، از زمان فعلی شروع کنید، اما بعد از آن تعداد ثانیه ها نمی توانند بیش از 2592000 (30 روز) باشد.
اتصال ("Localhost"، 11211، 30)؛ $ cache-\u003e اضافه کردن ("One"، 111، 0، 15)؛ $ cache-\u003e اضافه کردن ("دو"، 222، 0، 15)؛ $ cache-\u003e اضافه کردن ("سه"، 333، 0، 15)؛ $ cache-\u003e جایگزینی ("سه"، 777)؛ print_r ($ cache-\u003e دریافت (آرایه ("یکی"، "دو"، "سه")))؛ آرایه (\u003d\u003e 111 \u003d\u003e 222 \u003d\u003e 777)

memcache :: افزایش ()

مقدار کلید مشخص شده را به مقدار مشخص شده افزایش می دهد. اگر مقدار کلید مشخص شده عددی نیست و نمی تواند به یک عدد تبدیل شود، مقدار آن را به مقدار مشخص شده به عنوان پارامتر دوم تغییر خواهد داد. memcache :: افزایش () یک مورد را ایجاد نمی کند اگر آن وجود ندارد.

توصیه نمی شود با استفاده از MemCache :: افزایش () با مقادیر فشرده (نصب شده با پرچم memcache_compressed)، زیرا پس از آن شما سعی می کنید این مقادیر را با MemCache دریافت کنید :: دریافت کنید

من شخصا چک کردم و هیچ مشکلی متوجه شدم :)

int memcache :: افزایش

  • رشته $ کلید کلید کلید است که ارزش آن نیاز به افزایش دارد.
  • ارزش $ ارزش - ارزش افزایش.
اتصال ("Localhost"، 11211، 30)؛ $ Cache-\u003e Set ("کسی"، 10، 0، 5)؛ $ cache-\u003e افزایش ("کسی"، 10، 0، 5)؛ $ cache-\u003e افزایش ("کسی"، 10، 0، 5)؛ echo $ cache-\u003e دریافت ("کسی")؛ // از 30 سالگی

memcache :: cucreme ()

مقدار کلید مشخص شده را به مقدار مشخص شده کاهش می دهد. شبیه به memcache :: افزایش ()، مقدار فعلی عنصر به یک عددی تبدیل می شود و پس از آن کاهش می یابد

int memcache :: کاهش (String $ key [، int $ value \u003d 1])

  • رشته $ کلید کلید کلیدی است که ارزش آن کاهش است.
  • ارزش $ ارزش - ارزش دمیدن.

memcache :: flush ()

memcache :: flush () تمام ارزش های موجود را نامعتبر می کند. MemCache :: FLUSH () واقعا منابع حافظه را معاف نمی کند، بلکه تمام عناصر را به عنوان منسوخ شده است، و حافظه اشغال شده برای استفاده از ارزش های جدید در دسترس خواهد بود. شما همچنین می توانید از تابع memcache_flush () استفاده کنید

بول memcache :: flush. (خالی)

مثال زیر چیزی را به ارمغان نخواهد آورد.

اتصال ("Localhost"، 11211، 30)؛ $ Cache-\u003e Set ("کسی"، 111، 0، 5)؛ $ cache-\u003e set ("sometwo"، 222، 0، 5)؛ $ Cache-\u003e Set ("Sometreme"، 333، 0، 5)؛ $ cache-\u003e flush ()؛ // پاک کردن cache print_r ($ cache-\u003e getwo ("کسی"، "sometwo"، "sometreme"))؛

کار با سرورها و اتصالات.

MemCache می تواند با هر دو سرور و استخر (مجموعه ای) سرورها کار کند.

اگر فقط از یک سرور سرویس حافظه پنهان استفاده می کنید، باید یک شیء حافظه پنهان ایجاد کنید تا کار را راه اندازی کنید و از روش استفاده کنید memcache :: اتصال

اگر قصد دارید یک استخر از سرورها را تشکیل دهید، لازم است ابتدا یک شیء کش را ایجاد کنید، و سپس با روش memcache :: addserver تعداد مورد نیاز سرورها را به آن اضافه کنید.

memcache :: connect ()

اتصال به سرور memcached را تنظیم می کند. اتصال که با استفاده از MemCache باز شد :: Connect () به طور خودکار در انتهای اسکریپت بسته می شود، اما شما می توانید آن را به صراحت با استفاده از MemCache :: Close () بسته کنید. شما همچنین می توانید از تابع memcache_connect () استفاده کنید. کنترل درست در صورت موفقیت موفقیت آمیز یا نادرست در صورت خطا.

بول memcache :: اتصال

اتصال ("Localhost"، 11211، 30)؛

memcache :: pconnect ()

این روش شبیه به memcache :: connect () با تنها تفاوت است که اتصال دائمی را ایجاد می کند. این اتصال در انتهای اسکریپت بسته نشده و Memcache Call :: Close (). شما همچنین می توانید از تابع memcache_pconnect () استفاده کنید. شیء MemCache را در صورت اتمام موفقیت آمیز یا نادرست در صورت خطا به دست می آورید.

مخلوط memcache :: pconnect. (String $ host [، int $ port [، int $ timeout]))

  • این پارامتر همچنین می تواند سایر حمل و نقل را به عنوان یونیکس مشخص کند: /// PATH / TO /MEMCACHED.SOCK I.E. از سوکت های یونیکس استفاده کنید، در این مورد پورت باید به 0 تنظیم شود.
  • این پارامتر را به 0 تنظیم کنید اگر استفاده از سوکت ها فرض شود.
  • int $ timeout - محدودیت در ثانیه، برای اتصال به شیطان. فکر می کنم دو بار قبل از تغییر مقدار پیش فرض 1 ثانیه - شما می توانید تمام مزایای ذخیره سازی را از دست بدهید اگر اتصال شما بیش از حد طول بکشد.
pConnect ("Localhost"، 11211، 30)؛

memcache :: بستن ()

اتصال به سرور Memcached بسته می شود. این ویژگی اتصالات ثابت را متوقف نمی کند که تنها در حالی که خاموش / راه اندازی مجدد سرور وب را متوقف می کند. شما همچنین می توانید از تابع memcache_close () استفاده کنید.

بول memcache :: بستن. (خالی)

memcache :: addserver ()

یک سرور را به یک مجموعه از اتصالات اضافه می کند. اتصال که با استفاده از MemCache باز شد :: AddServer () به طور خودکار در انتهای اسکریپت بسته می شود، شما همچنین می توانید آن را به صورت دستی با Memcache بسته کنید :: Close (). شما می توانید از تابع memcache_add_server () استفاده کنید

هنگام استفاده از memcache :: addserver (بر خلاف memcache :: connect () و memcache :: pconnect ()) اتصال شبکه تا زمانی که لازم نیست نصب نشده است. بنابراین، هنگام اضافه کردن تعداد زیادی از سرورها در استخر، هزینه های سربار وجود ندارد، حتی اگر آنها مورد نیاز نیستند.

استخر سرور تحمل گسل بالاتر را فراهم می کند. هر خطای سوکت یا خطاهای memcached در سطح سرور (به جز خطاهای حافظه) باعث توزیع مجدد منابع می شود. چنین خطاهای مشتری به عنوان اضافه کردن یک کلید موجود، باعث شکست نمی شود.

اظهار نظر:

در صورت اتمام موفقیت آمیز یا نادرست در صورت خطا، درست می شود.

بول memcache :: addserver (String $ host [، int $ port \u003d 11211 [، bool $ persistent [، int $ timeout [، int $ timeout [، int $ retry_interval [، bool $ status [، callable $ failure_callback [، int $ timeoutms]]]] ]]]]]

  • string $ host - میزبان Memcached. این پارامتر همچنین می تواند سایر حمل و نقل را به عنوان یونیکس مشخص کند: /// PATH / TO /MEMCACHED.SOCK I.E. از سوکت های یونیکس استفاده کنید، در این مورد پورت باید به 0 تنظیم شود.
  • پورت Int $ پورت است که Memcached به اتصال گوش می دهد. این پارامتر را به 0 تنظیم کنید اگر استفاده از سوکت ها فرض شود.
  • bool $ persistent - استفاده از اتصال دائمی را تنظیم می کند. به طور پیش فرض درست است
  • iNT $ وزن - بیشتر، بیشتر، به احتمال زیاد این سرور برای ذخیره سازی مقادیر انتخاب می شود. کسانی که. این یک نوع "وزن" سرور در یک استخر مشترک است، به طور غیر مستقیم این نیز بار تخمین زده شده بر روی سرور است.
  • int $ timeout - محدودیت در ثانیه، برای اتصال به شیطان. فکر می کنم دو بار قبل از تغییر مقدار پیش فرض 1 ثانیه - شما می توانید تمام مزایای ذخیره سازی را از دست بدهید اگر اتصال شما بیش از حد طول بکشد.
  • string $ timoutms شرح داده نشده است.

دریافت اطلاعات

memcache :: getextendedstats ()

آرایه ای از آمار سرور دو بعدی و همسایگی را باز می گرداند. مجموعه ای از کلید های سرور "میزبان: پورت". مقادیر دارای پارامترهای آمار فردی هستند. سرورهای رد شده اشتباه خواهند کرد. شما همچنین می توانید از تابع memcache_get_extended_stats () استفاده کنید

اظهار نظر:

این ویژگی به MemCache در نسخه 2.0.0 اضافه شده است

آرایه. memcache :: getextendedstats. ([String $ type [، int $ slabid [، int $ limit \u003d 100]])

و اکنون جوک ها:

نوع آمار "Cachedump" از Memcached به دلایل امنیتی حذف شد

یک مثال از خروجی اطلاعات (بدون پارامترها تماس بگیرید):

آرایه (\u003d\u003e آرایه (\u003d\u003e 5179 \u003d\u003e 966862 \u003d\u003e 1.436505233 \u003d\u003e 1.4.5 \u003d\u003e 64 \u003d\u003e 160.302880 \u003d\u003e 483.975109 \u003d\u003e 6 \u003d\u003e 358080 \u003d\u003e 13 \u003d\u003e 15037476 \u003d\u003e 3501979 \u003d\u003e 46 \u003d\u003e 11507898 \u003d\u003e 3529578 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d \u003e\u003e 1643906080 \u003d\u003e 11298732744 \u003d\u003e 67108864 \u003d\u003e 1 \u003d\u003e 0 \u003d\u003e 4 \u003d\u003e 0 \u003d\u003e 3295454 \u003d\u003e 7623 \u003d\u003e 3501915 \u003d\u003e 0 \u003d\u003e 1825755) ...)

memcache :: getserverstatus ()

وضعیت سرور سرور / آفلاین را باز می گرداند. شما همچنین می توانید از تابع استفاده کنید memcache_get_server_status ()

اظهار نظر:

این ویژگی به MemCache در نسخه 2.0.0 اضافه شده است

int memcache :: getserverstatus. (String $ host [، int $ port \u003d 11211])

  • string $ host - میزبان Memcached.
  • پورت Int $ پورت است که Memcached به اتصال گوش می دهد.

memcache :: getstats ()

آرایه انجمنی را با آمار سرور باز می گرداند. مجموعه ای از کلیدها مربوط به آمار پارامترها و مقادیر برای مقدار پارامتر است. شما همچنین می توانید از تابع استفاده کنید memcache_get_stats ()

آرایه. memcache :: getstats.s ([رشته $ type [، int $ slabid [، int $ limit \u003d 100]])

  • رشته $ نوع - نوع آمار. مقادیر معتبر: (Reset، Malloc، Maps، Cachedump، Slabs، اقلام، اندازه). با توجه به مشخصات پروتکل Memcached، این استدلال های اضافی "را می توان برای راحتی توسعه دهندگان تغییر داد."
  • int $ slabid زمانی استفاده می شود که اولین پارامتر به "Cachedump" تنظیم می شود، سرور را تعریف می کند که برای اشکال زدایی استفاده می شود.
  • int $ Limit - هنگامی که پارامتر اول به "Cachedud" تنظیم می شود، تعداد سوابق را در تخلیه محدود می کند.

memcache :: getversion ()

شماره رشته - شماره سرور را باز می گرداند. شما همچنین می توانید از تابع استفاده کنید memcache_get_version ().

رشته memcache :: getversion. (خالی)

memcache :: setcompressStreshard ()

فشرده سازی خودکار مقادیر زیادی را فراهم می کند. شما همچنین می توانید از تابع استفاده کنید. memcache_set_compress_threshold ()

اظهار نظر:

این ویژگی به MemCache در نسخه 2.0.0 اضافه شده است

بول memcache :: setcompresstharhold. (ANT $ threshold [، float $ min_savings])

  • int $ threshold حداقل طول مقدار شما می خواهید به طور خودکار فشرده شود.
  • float $ min_savings - ضریب فشرده سازی را تعیین می کند. مقدار مشخص شده باید بین 0 تا 1 باشد. مقدار پیش فرض 0.2 حداقل 20٪ پس انداز فشرده سازی را فراهم می کند.

memcache :: setserverparams ()

تغییر پارامترهای سرور به طور مستقیم در طول اجرای. شما همچنین می توانید از تابع استفاده کنید. memcache_set_server_params ().

در صورت اتمام موفقیت آمیز یا نادرست در صورت خطا، درست می شود.

اظهار نظر:

این ویژگی به MemCache در نسخه 2.0.0 اضافه شده است

بول memcache :: setserverparams (String $ host [، int $ port \u003d 11211 [، int $ timeout [، int $ retry_interval \u003d false [، bool $ status [، callable $ failure_callback]]]]

  • string $ host - میزبان Memcached.
  • پورت Int $ پورت است که Memcached به اتصال گوش می دهد.
  • int $ timeout - محدودیت در ثانیه، برای اتصال به شیطان. فکر می کنم دو بار قبل از تغییر مقدار پیش فرض 1 ثانیه - شما می توانید تمام مزایای ذخیره سازی را از دست بدهید اگر اتصال شما بیش از حد طول بکشد.
  • int $ Retry_Interval - تنظیم می کند که اغلب سرور رد شده مصاحبه خواهد شد، مقدار پیش فرض 15 ثانیه است. تنظیم این پارامتر در -1 استخدام خودکار را غیرفعال می کند.
  • bool $ وضعیت - سرور را به صورت آنلاین نشان می دهد. تنظیم این پارامتر در False و Retry_Interval -1 اجازه می دهد تا سرور قابل بازیابی در استخر سرور فعال ذخیره شود تا الگوریتم های توزیع کلیدی را تحت تاثیر قرار ندهد. تجدید نظر به این سرور بین سرورهای موجود باقی مانده توزیع خواهد شد. به طور پیش فرض، مقدار درست است، یعنی سرور باید به صورت آنلاین در نظر گرفته شود.
  • callable $ failure_callback - به کاربر اجازه می دهد تا تابع فراخوانی را برای شروع زمانی که یک خطا شناسایی می شود، مشخص کند. تابع باید دو پارامتر دریافت کند، نام میزبان و پورت سرورها شکست خورد.

این مقاله شخصیت "آمبولانس" است. شرح مفصلی از اقدامات خاص که به شما امکان نصب و پیکربندی Memcached را بر روی سرور می دهد.

بیایید با تعریف شروع کنیم.

ممتد - نرم افزاری که خدمات ذخیره سازی داده ها را در RAM بر اساس یک جدول هش اجرا می کند.

شروع داده ها:

  • VPSسیستم عامل دبیان;
  • سایت فعلی که می توانید با FTP، SSH تماس بگیرید.

بیایید از آخرین مورد شروع کنیم. با توجه به منابع اینترنتی در حال اجرا (یا شباهت آن)، ما به سادگی می توانیم به سادگی و به سرعت متوجه آنچه که ما نصب کرده ایم (ممکن است این باشد که در میان چیزهای دیگر ما Memcached را پیدا خواهیم کرد). یک فایل را با نام info.php ایجاد کنید، که در آن شما می نویسید:

کد را با تماس با آدرس http://example.com/info.php انجام دهید.

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

نصب سرور Memcached

بیایید شروع به نصب تیم کنیم

apt-get install memcached php5-memcache

انتظار برای تکمیل نصب پس از بررسی نتایج توسط تیم netstat

در نتیجه، ما دریافت می کنیم:

TCP 0 0 *: 11211 *: * گوش دادن 13053 / memcached

همانطور که می بینیم، پیش فرض Memcached به طور پیش فرض پورت 11211 به طور پیش فرض. در نتیجه، از طریق این پورت، هر کسی می تواند اتصال و استفاده از سرور memcached ما. Mustocat خودتان، ما چنین حق را به سرور شما (localhost) ارائه می دهیم. فایل /etc/memcached.conf را از طریق کنترل پنل، یا از طریق کنسول باز کنید:

vi /etc/memcached.conf.

این فایل شامل نظرات دقیق است. اطمینان حاصل کنید که با آنها آشنا شوید.

یک رشته را اضافه کنید -L 127.0.0.1.

راه اندازی مجدد سرور Memcached با یک فرمان:

/etc/init.d/memcached restart

و دوباره بررسی کنید:

netstat -tap | grep memcached

در نتیجه، ما باید چیزی شبیه به

TCP 0 0 Localhost.Localdo: 11211 *: * گوش دادن 13092 / Memcached

در حال حاضر Memcached فقط در سرور محلی کار می کند.

نصب Memcache

فهرست دستورات (نسخه MemCache ممکن است متفاوت باشد):

apt-get install php5-dev libmmcache-dev pecl دانلود memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure - memcache && ساخت ماژول های CP / memcache.so / usr / lib / php5 / 20060613 / echo "extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

راه اندازی مجدد آپاچی:

Apachetem Brackful.

اسکریپت را قبلا در http://example.com/info.php بررسی کنید. حالا ما باید memcache را پیدا کنیم.

کارهای Memcached را بررسی کنید

یک فایل result.php ایجاد کنید و آن را راه اندازی کنید.

اتصال ("localhost"، 11211) یا خروج ("قادر به اتصال به سرور Memcached نیست")؛ $ version \u003d $ memcache-\u003e getVersion ()؛ نسخه Echo "سرور": "$ نسخه."
\\ n "؛ $ tmp_object \u003d جدید stdclass؛ $ tmp_object-\u003e str_attr \u003d" test "؛ $ tmp_object-\u003e int_attr \u003d 123؛ $ memcache-\u003e set (" کلید "، $ tmp_Object، false، 10) یا مرگ (" آن را " معلوم شد که ورودی را در memcached ترک کرد ")؛ echo" نوشتن داده ها به حافظه پنهان (داده ها به مدت 10 ثانیه ذخیره می شود)
\\ n "؛ $ get_Result \u003d $ memcache-\u003e دریافت (" کلید ")؛ echo" داده های ثبت شده در memcached:
\\ n "؛ var_dump ($ get_Result)؛؟\u003e

نتیجه کار اسکریپت:

سرور نسخه: 1.4.13 ما داده ها را به حافظه پنهان (داده ها 10 ثانیه ذخیره می شود) داده های ثبت شده در MEMCACHED: Object (STDClass) # 3 (2) ([str_attr "] \u003d\u003e string (4) تست "[" int_attr "] \u003d\u003e int (123))

آیا همه چیز یا تقریبا چنین است؟ سپس همه چیز به ترتیب است. اگر نه، سعی کنید مراحل را تکرار کنید.

امروز ما با یک مکانیزم ذخیره سازی جالبی برخورد خواهیم کرد: memcache php. طرف فوق العاده Memcahe این است که ما می توانیم همه چیز را از پرس و جو SQL، به اشیاء و هر ساختار داده دیگر ذخیره کنیم.

memcache چیست؟

مادی - این تکنولوژی آسان نیست و یا الگوریتم ذخیره سازی نیست، اول از همه این یک برنامه سرور در حال اجرا در یک سرور وب است. اگر از خدمات میزبانی استفاده می کنید، قبل از استفاده از Membrade در برنامه، باید اطمینان حاصل کنید که Memcahe در دسترس است. شما می توانید این کار را با استفاده از تابع phpinfo () انجام دهید.

مفهوم

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

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

نحوه کار با MemCache Server در PHP

برای کار با Memcache سرور، ما نیاز به یکی از کتابخانه های PHP-MemCache PHP یا PHP-Memcached.

انتخاب این یا آن کتابخانه بستگی به نیازهای فردی توسعه دهنده دارد، به طور عمده، آنها بسیار شبیه به یکدیگر هستند، با این تفاوت که php-memcached برخی از فرصت های عالی برای کار را فراهم می کند مانند:

  • کلید های CAS کلید های کپی
  • Callbacks (Callbacks)
  • روش GetDelayed () اجازه می دهد تا شما را به کاهش زمان انتظار، به موقع کلید های خواندن واقعی را به موقع
  • پشتیبانی پروتکل دودویی
  • توانایی اجتناب از سریال سازی با استفاده از IgBinary

هر دو ماژول php-memcach و php-memcachedاستاندارد برای پی اچ پی نیست، اما در مخزن PECL موجود است.

در مورد کار نه بر روی سرور خود، اما در سرور میزبان، شما مجبور نیستید انتخاب کنید، همه چیز قبلا پیکربندی شده است.

مثال از کار

بلافاصله توجه شما را به این واقعیت که این مثال بر روی PHP-Memcach و PHP-memcached کار می کند، پرداخت می شود.

MemCach PHP از روش های زیر برای کار با داده ها استفاده می کند:

  1. دریافت - برای به دست آوردن یک شی از حافظه پنهان؛
  2. مجموعه - شیء ورودی را با کلید در حافظه پنهان؛
  3. اضافه کردن - ضبط یک شی در حافظه پنهان اگر هیچ کلید در آن وجود ندارد؛
  4. جایگزینی - شیء ورودی به حافظه پنهان، در صورتی که کلید در حال حاضر وجود دارد.

من یک مثال ابتدایی از استفاده از ذخیره سازی با استفاده از سرور MemCache ارائه خواهم داد.

1
2
3
4
5
6
7

$ memcache \u003d جدید memcache ()؛
$ memcache -\u003e pconnect ("localhost"، 3211)؛ // در حال حرکت. به طور پیش فرض، شما می توانید از هر پورت استفاده کنید
$ key \u003d "key_1"؛
$ value \u003d آرایه (1، 2، 3، 4، 5)؛
$ expire \u003d 600؛
$ memcache -\u003e تنظیم ($ key، $ value، 0، $ demire)؛ // ارزش را برای 10 دقیقه نگه دارید
$ memcache -\u003e دریافت ("key_1")؛ // دریافت آرایه قبلی ضبط شده

هنگام استفاده از سرور عضو بلافاصله برای چندین پروژه، به یاد داشته باشید که داده ها در یک RAM ثبت شده است. این به این معنی است که اگر ارزش های جدید را از پروژه های مختلف به همان کلید بنویسید، پس برای هر دو مقدار دوم در حافظه موجود خواهد بود.

به عنوان یک نتیجه از کاربرد اطلاعاتی که در این مقاله ارائه شده است، می توانید سرور Memcached را نصب و پیکربندی کنید و پیکربندی پیکربندی پی اچ پی را برای ارتباط با آن، و همچنین خدمات تجزیه و تحلیل تجزیه و تحلیل تجزیه و تحلیل phpmemcachedadmn و خدمات آمار

نصب در زیر دبیان با سرور Bekenda رخ می دهد. اگر شما یک اتصال کار + PHP5-FPM دارید، به سادگی در دستورات Apache2 به PHP5-FPM جایگزین کنید
ابزار کار: مدیر فایل برای اتصال نرم افزار با ویرایشگر داخلی یا بتونه ساخته شده است.

حالا بگذارید بگوییم، ما در حال حاضر این سایت میزبانی http://example.com را داریم

برای شروع، شما باید تعیین کنید که چگونه پی اچ پی پیکربندی شده است (ناگهان Memcached قبلا نصب شده است؟)). برای انجام این کار، در ریشه سایت به طور موقت یک فایل info.php را با کد ایجاد کنید

در حال حاضر به آن نگاه کنید http://example.com/info.php

اگر می بینیم که یک رکورد مشابه وجود دارد، به این معنی است که همه چیز به ترتیب است، فرمت پی اچ پی مورد نظر تنظیم شده است.
اگر نه، به این معنی است که شما باید کار کنید.

نحوه نصب سرور memcached

قبل از نصب، شما باید مخزن را به روز کنید

apt-get update && apt-get upgrade

در حال حاضر ماژول Memcached و PHP را زیر آن نصب کنید

apt-get install memcached php5-memcache

نصب وجود دارد. پس از اتمام آن، بررسی کنید چه اتفاقی افتاد

در نتیجه، ما چیزی شبیه خواهیم دید

TCP 0 0 *: 11211 *: * گوش دادن 13053 / memcached

حالا شما باید آپاچی یا PHP-FPM را دوباره راه اندازی کنید

سرویس Apache2 Restart.

راه اندازی memcached

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

بستن Memcached از دسترسی از خارج

همانطور که می بینید، Memcached آویزان در بندر پیش فرض 11211. از آنجا که Memcached هیچ مکانیسم احراز هویت داخلی ندارد، به نظر می رسد که هر کسی می تواند از خارج خارج شود و از آن برای اهداف خود استفاده کند. برای جلوگیری از این، شما می توانید پورت 11211 را با استفاده از فایروال ببندید یا سرور Memcached را پیکربندی کنید تا بتوانید تنها از میزبان محلی استفاده شود. آخرین راه در زیر شرح داده شده است.

  1. یک رشته را اضافه کنید -L 127.0.0.1
  2. راه اندازی مجدد Memcached

    سرویس Memcached Restart.

    /etc/init.d/memcached restart

و دوباره بررسی کنید

netstat -tap | grep memcached

در نتیجه، ما باید این را ببینیم

TCP 0 0 Localhost.Localdo: 11211 *: * گوش دادن 13092 / Memcached

همچنین، پس از همه تغییرات، فراموش نکنید که آپاچی را دوباره راه اندازی کنید

سرویس Apache2 Restart.

افزایش حجم حافظه کاری Memcached را افزایش دهید

به طور پیش فرض، Memcached به استفاده از 64 مگابایت رم اختصاص داده شده است. من به 1024 افزایش خواهم داد، از پارامترهای سرور خود ادامه می دهید

  1. فایل پیکربندی را باز کنید vi /etc/memcached.conf
  2. مقدار -M 64 را پیدا کنید
  3. تغییر آن را در 1024 تغییر دهید
  4. راه اندازی مجدد سرویس Memcached Memcached Restart

ذخیره سازی PHP در Memcached

اگر چندین سایت مختلف توسط یک سرور یا خوشه استفاده شوند، می توانند جلسات دیگر را از بین ببرند و به حسابهای کاربران خود دسترسی پیدا کنند، که یک خطر بالقوه است.

شما می توانید پی اچ پی را سرعت بخشید، ذخیره سازی جلسه را از HDD به RAM با استفاده از Memcached منتقل کنید

شما باید بدانید که کدام پی اچ پی استفاده از شما، memcache یا memcached را استفاده می کنید. ، و آنچه را که دارید، می توانید از phpinfo استفاده کنید ()، ظرافت در تنظیمات وجود دارد، مراقب باشید

روش Memcache گسترش

  1. باز /etc/php5/mods-available/memcache.ini.
  2. اضافه کردن session.save_handler \u003d memcache session.save_path \u003d "TCP: //127.0.0.1: 11211"

روش برای گسترش memcached

  1. باز /etc/php5/mods-available/memcached.ini.
  2. اضافه کردن session.save_handler \u003d memcached session.save_path \u003d "127.0.0.1:11211"
  3. راه اندازی مجدد Apache Service Apache2 Restart

بررسی phpinfo.

حالا شما باید آنچه را که در خروج دارید بررسی کنید. برای انجام این کار، صفحه را با phpinfo باز کنید () و ما در جلسه Session.Save_Path در ستون مقادیر محلی جستجو می کنیم. معنی باید TCP باشد: //127.0.0.1: 11211 یا 127.0.0.1:11211 .. conf)، و ما به دنبال آن هستیم
php_admin_value session.save_path

به هر حال، شما همچنین می توانید از دستورالعمل php_value برای پیکربندی کل سرور در سطح جهانی استفاده کنید، اما تنها سایت های خاص. برای این، شما می توانید ردیابی در ریشه سایت خود را ویرایش کنید

php_value session.save_handler "memcache" php_value session.save_path "TCP: //127.0.0.1: 11211"

فایل پیکربندی آماده سازی آماده Memcached

شما همچنین می توانید همه چیز را برای نیازهای خود پیکربندی کنید، فایل پیکربندی شامل نظرات دقیق است:

# memcached پیکربندی پیش فرض فایل # 2003 - جی bonci< > # این فایل پیکربندی توسط اسکریپت Start-Memcached ارائه شده به عنوان # بخشی از توزیع Debian GNU / Linux خوانده می شود. # اجرا به عنوان یک daemon demcached. این فرمان ضمنی است و برای # daemon مورد نیاز نیست. به Readme.debian مراجعه کنید که با این بسته برای اطلاعات بیشتر همراه است. -d # log memcached "خروجی به / var / log / membached logfile /var/log/memcached.log # be verbose # -v # حتی بیشتر verbose # -vv # شروع با کلاه 64 مگابایت حافظه. آی تی "معقول" معقول، و Daemon Default # توجه داشته باشید که Daemon به این اندازه رشد می کند، اما شروع به نگهداری این حافظه # حافظه # Megabytes، که به ذخیره سازی اختصاص داده شده است. پیش فرض، 64 مگابایت. # -m 64 -M 1024 # پورت که در آن Memcached قطع خواهد شد، پیش فرض 11211 -P 11211 # Daemon را به عنوان ریشه اجرا کنید. START-MEMCACHED به طور پیش فرض به عنوان ریشه اجرا می شود اگر فرمان # -u در این فایل پیکربندی وجود داشته باشد، MemCache # مشخص کنید کدام آدرس IP برای گوش دادن. پیش فرض این است که گوش دادن به تمام آدرس های IP # این پارامتر یکی از تنها اقدامات امنیتی است که Memcached داشته است، بنابراین مطمئن شوید که # آن را گوش دادن در یک رابط فایروال شده است. -L 127.0.0.1 # تعداد اتصالات ورودی همزمان را محدود کنید. Daemon Default 1024 # -c 1024 # قفل کردن تمام حافظه پراکنده است. قبل از این که این حافظه خسته شده باشد، با ReadMe و صفحه اصلی مشورت کنید. # -k # بازگشت خطای بازگشت زمانی که حافظه خسته شده است (به جای حذف ITMS) # -M # حداکثر فایل اصلی محدود کردن # -r.

نصب تمدید memcache

دستورات زیر نشان داده شده است، که با آن می توانید Memcache extension php را از کنسول به صورت دستی نصب کنید

apt-get install php5-dev libmmcache-dev pecl دانلود memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure - memcache && ساخت ماژول های CP / memcache.so / usr / lib / php5 / 20060613 / echo "extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

راه اندازی مجدد آپاچی به طوری که تغییرات به اجرا درآمد

سرویس Apache2 Restart.

نحوه بررسی کار Memcached

ایجاد در ریشه فایل سایت memcachetest.php و نصب کد زیر

اتصال ("localhost"، 11211) یا خروج ("قادر به اتصال به سرور Memcached نیست")؛ $ version \u003d $ memcache-\u003e getVersion ()؛ نسخه Echo "سرور": "$ نسخه."
\\ n "؛ $ tmp_object \u003d جدید stdclass؛ $ tmp_object-\u003e str_attr \u003d" test "؛ $ tmp_object-\u003e int_attr \u003d 123؛ $ memcache-\u003e set (" کلید "، $ tmp_Object، false، 10) یا مرگ (" آن را " معلوم شد که ورودی را در memcached ترک کرد ")؛ echo" نوشتن داده ها به حافظه پنهان (داده ها به مدت 10 ثانیه ذخیره می شود)
\\ n "؛ $ get_Result \u003d $ memcache-\u003e دریافت (" کلید ")؛ echo" داده های ثبت شده در memcached:
\\ n "؛ var_dump ($ get_Result)؛؟\u003e

در حال حاضر هنوز هم برای بررسی نتایج: http://example.com/memcachetest.php
اگر همه چیز به درستی انجام شود، چیزی اشتباه خواهید دید

phpmemcachedadmin - نظارت، آمار و مدیریت Memcached

phpmemcachedadmin نرم افزاری است که یک رابط وب را برای نظارت و مدیریت سرویس Memcached در لینوکس فراهم می کند. به شما اجازه می دهد تا در آمار زمان واقعی برای همه پشتیبانی شده توسط سرور عملیات مشاهده کنید: دریافت، تنظیم، حذف، افزایش، کاهش، بازپرداخت، اخراج، CAS، و همچنین آمار سرور: شبکه، موقعیت، نسخه کار مرتبط با نمودار و سرور داخلی پیکربندی

نصب و پیکربندی phpmemcachedadmin

در اینجا شما می توانید چند راه را انجام دهید: یک دامنه یا زیر دامنه جداگانه را به عملیات این سرویس اختصاص دهید. و شما می توانید یک زیر شاخه بر روی دسکتاپ ایجاد کنید و رمز عبور را برای آن قرار دهید یا. من آخرین راه را برای نصب رمز عبور در پوشه به عنوان ساده تر توصیف خواهم کرد.

بنابراین، بگذارید بگوییم سایت HTTPS: // سایت داریم

CD / var / www / سایت

یک دایرکتوری ایجاد کنید و به آن بروید

mkdir phpmemcachedadmin && cd phpmemcachedhedadmin

آخرین نسخه توزیع را دانلود کنید

wget http://phpmemcaceadmin.googlecode.com/files/phpmemmcachedadmin-1.2.2-r262.tar.gz.

باز کردن و حذف بایگانی با توزیع

tar -xvzf phpmemcachedadmin-1.2.2-r262.tar.gz && rm -rf phpmemcachedadmin-1.2.2-r262.tar.gz

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

پیدا کردن ./type f -exec chmod 0644 () \\؛ پیدا کردن ./type d -exec chmod 0755 () \\؛

Authtype پایه Authname "منطقه خصوصی" authuserfile .htpasswd نیاز به memcachedmanager کاربر

create.htpasswd

htpasswd -c .htpasswd memcachedmanager

رمز عبور خود را وارد کنید

این همه است نام کاربری به دایرکتوری MemCachedManager، اگر شما آن را تغییر ندهید. باز کردن https: // site / phpmemcacheddmin (دامنه پول به تنهایی)، ورود / رمز عبور را وارد کنید و استفاده کنید

سرانجام

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

امروز من یک قطعه کوچکی از کد را ارائه خواهم داد، که به شما آموزش می دهد تا با MemCache تعامل داشته باشید. به منظور نصب Mediatemple در میزبانی شما نیاز به اطلاعات برای SSH.

چه کسی از memcache استفاده می کند؟

MemCache توسط Danga تعاملی به منظور افزایش سرعت پورتال LiveJournal.com توسعه داده شد. MemCache زمان دانلود را از پایگاه داده به تقریبا به صفر کاهش می دهد، که از آن سرعت دانلود برای کاربران، مدیریت منابع شتاب دهنده، و غیره را افزایش می دهد. در حال حاضر فیس بوک بزرگترین کاربر سرویس MemCache است. با توجه به تعداد افرادی که روزانه به فیس بوک می رسند، تقریبا این سرویس را ریختند - و برای آنها یک مکان جداگانه اختصاص داده است.

memcache چیست؟

خوب، جالب شد؟ MemCache یک سیستم توزیع عنصر ذخیره سازی جهانی است. اگر هیچ چیز در حافظه پنهان وجود نداشته باشد، پرس و جو به پایگاه داده ساخته شده است و نتایج در MemCache نوشته شده است:

MemCache 5 توابع را فراهم می کند:

  • دریافت () - مقدار عصاره ها را بر اساس کلید
  • تنظیم () - مقدار را تعیین می کند
  • اضافه کردن () - اضافه می کند حافظه پنهان اگر آن وجود ندارد
  • جایگزین () - Cache را جایگزین می کند
  • flush () - تمام داده های بزرگنمایی را حذف می کند

کد

اگر Memcache را نصب کردید، می توانید از آنها استفاده کنید. یک نظر وجود دارد که بسیاری از حافظه پنهان بد است. من کاملا با این مخالفتم! سریعتر سایت شما بارگذاری می شود - بهتر است!

  • دو خط اول اتصال به memcache را ایجاد می کنند.
  • بعد از اسکریپت اتصال به پایگاه داده پیروی می کند.
  • سپس کلید را ایجاد کنید. هنگامی که ما می خواهیم داده ها را در memcache قرار دهیم، باید 3 عنصر را برای وارد کردن: کلید، ارزش و عمر حافظه پنهان انتقال دهیم. کلید برای دسترسی به داده ها ضروری است. در این مثال شما می توانید ببینید که من از کلید MD5 از پرس و جو استفاده می کنم.
  • سپس ما بررسی می کنیم که یک کش وجود دارد. چک به ما درست یا نادرست بازگشت. اگر او باشد، ما به آن دسترسی داریم
  • اگر حافظه پنهان نیست، پس ما به پایگاه داده متصل می شویم و ارزش را دریافت می کنیم. برای ایجاد یک کش، ما از عبارت زیر استفاده می کنیم: $ MemCache-\u003e Set ($ key، $ ردیف، درست، 20)؛ $ ردیف مجموعه ای از آنچه که ما از پایه دریافت کردیم، نگه می دارد. 20 این طول عمر در حافظه پنهان در ثانیه است.

$ memcache \u003d memcache جدید؛ $ memcache-\u003e اتصال ("127.0.0.1"، 11211) یا مرگ ("نمی تواند اتصال")؛ شامل ("شامل / connect.php")؛ // ایجاد یک کلید، سپس Cache $ key \u003d md5 را بررسی کنید ("را انتخاب کنید * از memcached_test که نام \u003d" اشلی ")؛ $ get_Result \u003d $ memcache\u003e دریافت ($ key)؛ اگر ($ get_Result) (echo $ get_Result ["name"]؛ echo $ get_Result ["username"]؛ echo "داده ها از حافظه پنهان"؛) else (// / / دریافت اطلاعات از پایگاه داده و ایجاد پول نقد $ query \u003d " SELECT * CACHE از MEMCACHED_TEST که در آن نام \u003d "اشلی"؛ "$ نتیجه \u003d mysql_Query ($ query)؛ $ row \u003d mysql_fetch_array ($ نتیجه)؛ print_r ($ ردیف)؛ $ memcache\u003e set ($ key، $ ردیف، درست است 20) // ذخیره نتیجه 20 ثانیه از اکو "داده های کشیده شده از پایگاه داده"؛)

این ساده ترین مثال استفاده از MemCache است، اما امیدوارم شروع خوبی برای شما باشد.

زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه