زنگ

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

ماژول Memcache رابطهای راحت رویه ای و شی گرا را برای موتور حافظه ذخیره شده فراهم می کند. Memcache یک Daemon caching بسیار کارآمد است که بطور اختصاصی برای کاهش بار پایگاه داده برای برنامه های وب با بار زیاد و پویا طراحی شده است.

ماژول Memcache یک کنترل کننده جلسه را نیز ارائه می دهد. اطلاعات بیشتر در مورد Memcached را می توان در memcached.org یافت

در اصل توضیحات نصب و تنظیمات به زبان روسی از قبل آماده شده است و می توانید با آن آشنا شوید.

به خاطر داشته باشید که می توانید هر نوع داده را در حافظه پنهان ذخیره کنید: متغیرها ، اشیاء و آرایه ها ، اما منابع نیست!

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

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

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

کار با ارزشها

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

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

چند روش خاص برای افزایش و کاهش ارزش عدد صحیح.

Memcache :: set ()
Memcache :: افزودن ()

به شما امکان می دهد یک مقدار را تنظیم کنید ، فشرده سازی و زمان زندگی را برای این مقدار تنظیم کنید. تنها تفاوت در رفتار این روشها این است که اگر مقدار با این کلید از قبل تنظیم شده باشد ، متد افزودنی Memcache: FALSE برمی گردد.

بول Memcache: اضافه کردن
بول Memcache: مجموعه (کلید رشته $ ، متغیر $ var [، پرچم int [، تاریخ $ منقضی شده]])

  • کلید $ string - کلید مقدار ، با استفاده از آن با مقدار کار می کنیم.
  • ارزش $ var - ارزش.
  • ثابت ها
اتصال ("localhost" ، 11211 ، 30)؛ $ cache-\u003e افزودن ("myfirst" ، 1000 ، MEMCACHE_COMPRESSED ، 15)؛ $ cache-\u003e set ("mysecond" ، 2000 ، MEMCACHE_COMPRESSED ، 15)؛

Memcache :: get ()

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

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

هشدارها!

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

Memcached همچنین دارای زخمهایی است: طبق برخی منابع ، آن (گاهی اوقات) مستعد خطاهای سرریز بافر، که هر از گاهی منجر به نوشتن اطلاعات [جزئی] می شود و بنابراین ، سوءاستفاده از ساختارها را غیرممکن می کند ، فراموش نکنید که بررسی کنید که آیا در نتیجه دریافت یک آرایه یا اشیاء ، Memcache :: بازگرداندن بول ، دیوانه یا طولانی بودن ، پس از آن چیزی رخ داده است.

رشته Memcache :: get (کلید رشته $ [، پرچم های Int & $])
آرایه Memcache :: get (کلیدهای آرایه $ [، آرایه و $ پرچم])

  • کلید string $ - کلید مقدار یا مجموعه ای از کلیدهایی که مقادیر مورد نظر شما را می توانید بدست آورید.
  • int $ flag - هدف از این پارامتر برای من رمز و راز باقی مانده است. من سعی کردم از برخی مقادیر عدد صحیح استفاده کنم ، اما هیچ تاثیری نداشت. و مثالها اکثراً بدون استفاده از آن ، که من نتیجه گرفتم آورده شده است: شما می توانید بدون آن خوب کار کنید :)
اتصال ("localhost" ، 11211 ، 30)؛ $ cache-\u003e افزودن ("myfirst" ، 1000 ، MEMCACHE_COMPRESSED ، 15)؛ $ cache-\u003e set ("mysecond" ، 2000 ، MEMCACHE_COMPRESSED ، 15)؛ print_r ($ cache-\u003e get (آرایه ("myfirst" ، "mysecond"))؛

نتیجه:

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

Memcache :: حذف ()

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

اظهار نظر:

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

خوب ، از گزینه های پایدار ، همه چیز باقی مانده صفر کردن مقادیر غیرضروری است:

$ cache-\u003e set ("سه" ، NULL)؛

فقط یک منفی - کلید در این حالت به جایی نمی رسد

رشته Memcache :: حذف (کلید رشته $ [، int $ timeout \u003d 0])

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

Memcache :: جایگزین ()

نوشتن مقدار موجود

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

رشته Memcache: جایگزین (کلید رشته $ ، متغیر $ var [، پرچم int [، تاریخ $ منقضی شده]])

  • کلید رشته $ - کلیدی که مقدار شما می خواهید جایگزین کنید.
  • ارزش $ var مقدار جدید است.
  • int $ flag - پرچم نشانگر استفاده از فشرده سازی (اینجاست که Zlib لازم است) برای مقدار ذخیره شده ، می توانید از ثابت استفاده کنید
  • int $ منقضی شده - طول عمر ارزش (حافظه پنهان). اگر برابر صفر باشد ، پس از آن به طور نامحدود. همچنین می توانید از زمان شروع یا تعداد ثانیه هایی که از زمان فعلی شروع می شود استفاده کنید ، اما در این صورت تعداد ثانیه ها نمی تواند از 2592000 (30 روز) تجاوز کند.
اتصال ("localhost" ، 11211 ، 30)؛ $ cache-\u003e add ("one"، 111، 0، 15)؛ $ cache-\u003e افزودن ("دو" ، 222 ، 0 ، 15)؛ $ cache-\u003e اضافه کردن ("سه" ، 333 ، 0 ، 15)؛ $ cache-\u003e جایگزین ("سه" ، 777)؛ print_r ($ cache-\u003e get (آرایه ("یک" ، "دو" ، "سه"))؛ آرایه (\u003d\u003e 111 \u003d\u003e 222 \u003d\u003e 777)

Memcache :: افزایش ()

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

توصیه می شود از Memcache :: increment () با مقادیر فشرده شده استفاده کنید (با پرچم MEMCACHE_COMPRESSED) فشرده شده است ، زیرا در این صورت "سورپرایز" وجود خواهد داشت ، وقتی می خواهید با Memcache این مقادیر را دریافت کنید: دریافت کنید ()

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

int Memcache: افزایش

  • کلید رشته $ - کلیدی که مقدار شما می خواهید آن را اضافه کنید.
  • مقدار int $ مقدار افزایشی است.
اتصال ("localhost" ، 11211 ، 30)؛ $ cache-\u003e set ("SomeOne" ، 10 ، 0 ، 5)؛ $ cache-\u003e افزایشی ("SomeOne" ، 10 ، 0 ، 5)؛ $ cache-\u003e افزایشی ("SomeOne" ، 10 ، 0 ، 5)؛ echo $ cache-\u003e get ("SomeOne") ؛ // 30 چاپ می کند

Memcache: کاهش ()

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

int Memcache: کاهش (کلید رشته $ [، ارزش $ \u003d 1])

  • کلید string $ - کلیدی که ارزش آن را می خواهید کاهش دهید.
  • مقدار int $ مقدار کاهش است.

Memcache :: flush ()

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

بول Memcache: گرگرفتگی (خالی)

مثال زیر هیچ چیزی را تولید نمی کند.

اتصال ("localhost" ، 11211 ، 30)؛ $ cache-\u003e set ("SomeOne" ، 111 ، 0 ، 5)؛ $ cache-\u003e set ("someTwo" ، 222 ، 0 ، 5)؛ $ cache-\u003e set ("SomeTree" ، 333 ، 0 ، 5)؛ $ cache-\u003e flush ()؛ // پاک کردن cache print_r ($ cache-\u003e دریافت (آرایه ("SomeOne" ، "SomeTwo" ، "SomeTree"))؛

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

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

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

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

Memcache :: اتصال ()

اتصال به سرور Memcached را برقرار می کند. اتصال که با Memcache :: اتصال () باز شد) با پایان یافتن اسکریپت به طور خودکار بسته می شود ، اما می توانید صریحاً با استفاده از Memcache :: close () را ببندید. روش دیگر ، می توانید از تابع memcache_connect () استفاده کنید. TRUE را با موفقیت یا FALSE روی خطا باز می گرداند.

بول Memcache :: اتصال

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

Memcache :: pconnect ()

این روش شبیه Memcache :: connect () است و تنها تفاوت آن در ایجاد ارتباط مداوم است. با پایان یافتن این اسکریپت ، این اتصال بسته نمی شود و Memcache :: close () فراخوانی می شود. روش دیگر ، می توانید از تابع memcache_pconnect () استفاده کنید. یک مورد Memcache را با موفقیت یا FALSE روی خطا باز می گرداند.

مخلوط Memcache :: pconnect (رشته $ میزبان [، پورت $ $ [، محاسبه $ $]])

  • این پارامتر همچنین می تواند انتقالهای دیگری مانند یونیکس را مشخص کند: ///path/to/memcached.sock i.e. از پریزهای UNIX استفاده کنید ، در این حالت پورت باید بر روی 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 :: اتصال () و Memcache :: PConnect ()) ، تا زمانی که واقعاً لازم نباشد ، اتصال به شبکه برقرار نمی شود. بنابراین ، هنگام اضافه کردن تعداد زیادی سرور به استخر ، حتی اگر به هیچ وجه لازم نباشد ، سربار وجود ندارد.

استخر سرور انعطاف پذیری بالاتری را ارائه می دهد. هرگونه خطای سوکت یا خطاهای Memcached در سطح سرور (به غیر از خطاهای حافظه) باعث تغییر مکان منابع می شود. خطاهای مشتری مانند اضافه کردن کلید موجود خراب نمی شوند.

اظهار نظر:

TRUE را در موفقیت یا FALSE روی خطا باز می گرداند.

بول Memcache :: addServer (string $ host [، int $ port \u003d 11211 [، bool $ ماندگار [، int $ وزن [، int $ timeout [، int $ retry_interval [، bool $ status [، callable $ fail_callback [، int $ timeoutms]]]] ]]]])

  • رشته میزبان $ - میزبان Memcached. این پارامتر همچنین می تواند انتقالهای دیگری مانند یونیکس را مشخص کند: ///path/to/memcached.sock i.e. از پریزهای UNIX استفاده کنید ، در این حالت پورت باید بر روی 0 تنظیم شود.
  • int $ port پورتي است كه در آن Memcached اتصالات را گوش مي دهد. در صورت استفاده از سوکت ، این پارامتر را بر 0 تنظیم کنید.
  • bool $ ثابت - استفاده از اتصال پایدار را تنظیم می کند. پیش فرض TRUE است.
  • int $ وزن - هرچه این سرور بیشتر باشد احتمال ذخیره سازی مقادیر انتخاب می شود. آن این نوعی "وزن" سرور در استخر مشترک است ، بطور غیر مستقیم آن نیز بار تخمینی بر روی سرور است.
  • int $ timeout - برای اتصال به شبح در چند ثانیه محدود کنید. قبل از تغییر پیش فرض 1 ثانیه دو بار فکر کنید - اگر اتصال شما خیلی طولانی طول بکشد ، می توانید تمام مزایای ذخیره را از دست بدهید.
  • $ timeoutms رشته - توصیف نشده است.

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

Memcache :: getExtendedStats ()

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

اظهار نظر:

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

آرایه Memcache :: getExtendedStats ([string $ type [، int $ slabid [، int $ limit \u003d 100]]])

و حالا شوخی:

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

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

Array (\u003d\u003e Array (\u003d\u003e 5179 \u003d\u003e 966862 \u003d\u003e 1336505233 \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 76 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\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 ()

اظهار نظر:

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

int Memcache :: getServerStatus (رشته $ میزبان [، پورت $ $ \u003d 11211])

  • رشته میزبان $ - میزبان Memcached.
  • int $ port پورتي است كه در آن Memcached اتصالات را گوش مي دهد.

Memcache :: getStats ()

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

آرایه Memcache :: getStatss ([string $ type [، int $ slabid [، int $ limit \u003d 100]]])

  • نوع string $ - نوع آمار. مقادیر معتبر: (تنظیم مجدد ، malloc ، نقشه ها ، cachedump ، اسلب ، اقلام ، اندازه). با توجه به مشخصات پروتکل Memcached ، این آرگومان های اضافی "ممکن است برای راحتی توسعه دهندگان تغییر یابد."
  • int $ slabid - هنگامی که اولین پارامتر روی "cachedump" تنظیم می شود ، استفاده می شود که سرور را برای استفاده در اشکال زدایی استفاده می کند.
  • int $ limit - در هنگام تنظیم اولین پارامتر "cachedump" برای محدود کردن تعداد ورودی های روگرفت از آن استفاده می شود.

Memcache :: getVersion ()

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

رشته Memcache :: getVersion (خالی)

Memcache :: setCompressThreshold ()

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

اظهار نظر:

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

بول Memcache :: setCompressThreshold (آستانه int $ [، شناور $ min_savings])

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

Memcache :: setServerParams ()

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

TRUE را در موفقیت یا FALSE روی خطا باز می گرداند.

اظهار نظر:

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

بول Memcache :: setServerParams (رشته $ $ میزبان [، int $ port \u003d 11211 [، int $ timeout [، int $ retry_interval \u003d false [، bool status] [، callable $ fail_callback]]]]])

  • رشته میزبان $ - میزبان Memcached.
  • int $ port پورتي است كه در آن Memcached اتصالات را گوش مي دهد.
  • int $ timeout - برای اتصال به شبح در چند ثانیه محدود کنید. قبل از تغییر پیش فرض 1 ثانیه دو بار فکر کنید - اگر اتصال شما خیلی طولانی طول بکشد ، می توانید تمام مزایای ذخیره را از دست بدهید.
  • int $ retry_interval - تعیین می کند که چند بار سرور شکست خورده رأی داده می شود ، پیش فرض 15 ثانیه است. تنظیم این پارامتر در -1 امتحان مجدد خودکار را غیرفعال می کند.
  • وضعیت bool $ - سرور را به عنوان ONLINE علامت گذاری می کند. تنظیم این پارامتر در FALSE و retry_interval -1 اجازه می دهد تا سرور خراب در استخر سرور فعال نگه داشته شود تا الگوریتم های تخصیص کلید تحت تأثیر قرار نگیرد. تماس با این سرور در بین سرورهای موجود نیز توزیع می شود. پیش فرض TRUE است ، به این معنی که سرور باید با ONLINE رفتار شود.
  • callable $ fail_callback - به کاربر اجازه می دهد تا هنگام مواجهه با خطا عملکرد پاسخ به تماس را مشخص کند. این عملکرد باید دو پارامتر داشته باشد ، نام میزبان و پورت سرور ناموفق.

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

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

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

اطلاعات اولیه:

  • VPSسیستم عامل دبیان;
  • سایتی معتبر که از طریق FTP ، SSH قابل دسترسی است.

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

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

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

نصب سرور Memcached

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

دریافت-نصب memcached php5-memcache

منتظر اتمام نصب هستیم. سپس نتایج را با دستور بررسی کنید netstat

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

Tcp 0 0 *: 11211 *: * LISTEN 13053 / memcached

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

Vi /etc/memcached.conf

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

خط -l 127.0.0.1 را اضافه کنید.

سرور memcached را با دستور مجدداً راه اندازی کنید:

/etc/init.d/memcached راه اندازی مجدد

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

Netstat -tap | grep memcached

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

Tcp 0 0 localhost.localdo: 11211 *: * LISTEN 13092 / memcached

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

نصب Memcache

لیست دستورات (نسخه ممكش ممكن است متفاوت باشد!):

Apt-get install php5-dev libmemcache-dev pecl download memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure --enable-memcache && make module module / memcache.so / usr / lib / php5 / 20060613 / echo "پسوند \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

راه اندازی مجدد Apache:

Apachectl برازنده

بیایید اسکریپتی را که قبلاً ارسال کرده ایم در http://example.com/info.php بررسی کنیم. حال باید مورد Memcache را در آنجا پیدا کنیم.

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

بیایید یک فایل result.php ایجاد کنیم و آن را اجرا کنیم.

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

نتیجه فیلمنامه:

نسخه سرور: 1.4.13 نوشتن داده ها در حافظه نهان Memcached (داده ها برای 10 ثانیه ذخیره خواهند شد) داده های ارسال شده به Memcached: object (stdClass) شماره 3 (2) (["str_attr"] \u003d\u003e رشته (4) "تست" ["int_attr"] \u003d\u003e int (123))

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

امروز ما با یک مکانیزم جالب ذخیره داده ها سر و کار خواهیم داشت: Mempache php... نکته جالب در مورد memcahe این است که می توانیم از نمایش داده های SQL گرفته تا اشیاء و سایر ساختارهای داده چیزی را ذخیره کنیم.

Memcache چیست؟

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

مفهوم

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

در یک نسخه ساده ، مفهوم memcahe را می توان به شرح زیر خلاصه کرد: اشیاء php که اغلب استفاده می شود در RAM سرور به عنوان مجموعه ای از جفت های کلید هدف ذخیره می شوند و ذخیره می شوند. اگر الگوریتم memcahe php شی مورد درخواست را در حافظه پیدا نکرد ، شی مورد نیاز به روش معمول ایجاد می شود و در حافظه پنهان ذخیره می شود.

نحوه کار با سرور Memcache در PHP

برای همکاری با سرور Memcache ، به یکی از کتابخانه های PHP php-memcache یا php-memcached احتیاج داریم.

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

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

هر دو ماژول php-memcach و php-memcachedphp استاندارد نیستند اما در مخازن 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"؛
مقدار $ \u003d آرایه (1 ، 2 ، 3 ، 4 ، 5)؛
$ منقضی شده \u003d 600؛
$ memcache -\u003e مجموعه (کلید $ ، ارزش $ ، 0 ، $ منقضی شده)؛ // مقدار را 10 دقیقه ذخیره کنید
$ memcache -\u003e get ("key_1")؛ // آرایه قبلاً نوشته شده را بدست آورید

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

در نتیجه استفاده از اطلاعات مندرج در این مقاله ، شما قادر به نصب و پیکربندی سرور Memcached و افزونه php لازم برای تعامل با آن و همچنین سرویس آنالیز و آمار phpMemcachedAdmin خواهید بود.

نصب و راه اندازی زیر دبیان با یک سرور باطن انجام می شود. اگر یک بسته نرم افزاری کار + php5-fpm دارید ، فقط دستورات apache2 را با php5-fpm جایگزین کنید
جعبه ابزار کار: مدیر فایل برای اتصال نرم افزار با ویرایشگر داخلی یا بتونه.

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

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

اکنون بیایید به http://example.com/info.php بپردازیم

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

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

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

به روزرسانی و به روزرسانی مناسب را بدست آورید

حالا بیایید memcached و ماژول php را برای آن نصب کنیم

دریافت-نصب memcached php5-memcache

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

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

Tcp 0 0 *: 11211 *: * LISTEN 13053 / memcached

اکنون باید Apache یا php-fpm را مجدداً راه اندازی کنید

راه اندازی مجدد سرویس apache2

نصب تنظیم شده

اکنون که سرور نصب شده است ، باید آن را نیشگون بگیرید. دشوار نیست و طولی نمی کشد.

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

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

  1. خط -l 127.0.0.1 را اضافه کنید
  2. بارگیری مجدد memcached

    راه اندازی مجدد سرویس ذخیره شده

    /etc/init.d/memcached راه اندازی مجدد

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

Netstat -tap | grep memcached

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

Tcp 0 0 localhost.localdo: 11211 *: * LISTEN 13092 / memcached

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

راه اندازی مجدد سرویس apache2

افزایش حافظه کاری Memcached

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

  1. پرونده پیکربندی vi /etc/memcached.conf را باز کنید
  2. مقدار -m 64 را پیدا کنید
  3. آن را به -m 1024 تغییر دهید
  4. راه اندازی مجدد سرویس memcached که مجدداً انجام شده است

ذخیره جلسات PHP در Memcached

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

با انتقال حافظه جلسه از hdd به RAM با استفاده از memcached می توانید php را سرعت بخشید

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

روش گسترش ممكنه

  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. سرویس apache2 را مجدداً راه اندازی مجدد کنید

بررسی Phpinfo

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

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

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

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

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

# پیکربندی پیش فرض # memcached # 2003 - Jay Bonci< > # این پرونده پیکربندی توسط اسکریپت شروع-memcached ارائه شده به عنوان # بخشی از توزیع Debian GNU / Linux خوانده می شود. # اجرای memkached به عنوان یک Daemon. این دستور ضمنی است ، و برای اجرای # Daemon لازم نیست. برای اطلاعات بیشتر در مورد README.Debian که با این بسته همراه است مراجعه کنید. -d # log خروجی memcached به / var / log / logcile log / فایل /var/log/memcached.log # کلام شوید # -v # حتی واضح تر باشید (دستورات مشتری را چاپ کنید) # -vv # شروع با کلاه از 64 مگابایت حافظه استفاده می شود. این معقول است و پیش فرض Daemon # توجه داشته باشید که Daemon به این اندازه رشد می کند ، اما این مقدار # حافظه # مقدار حافظه را در مگابایت که برای ذخیره سازی ذخیره شده است ، شروع نمی کند. پیش فرض 64 مگابایت است. # -m 64 -m 1024 # بندری که Memcached در آن آویزان خواهد شد ، به طور پیش فرض 11211 -p 11211 # Daemon را به صورت ریشه اجرا کنید. اگر هیچ دستور # -u در این پرونده پیکربندی وجود نداشته باشد - memcache start-memcached به صورت پیش فرض به صورت root اجرا می شود اگر آدرس IP را برای گوش دادن به آن مشخص کنید. پیش فرض گوش دادن به تمام آدرس های IP است. این پارامتر یکی از تنها اقدامات امنیتی است که memcached دارد ، بنابراین مطمئن شوید که # را در یک رابط فایروال گوش نمی کنید. -L 127.0.0.1 # تعداد اتصالات ورودی همزمان را محدود کنید. پیش فرض daemon 1024 # # -c 1024 # قفل کردن تمام حافظه های صفحه ای است قبل از انجام این خطای # -k # خطای بازگشت با حافظه (به جای حذف موارد) با README و صفحه اصلی مشورت کنید. محدود کردن # -r

افزونه Memcache را نصب کنید

در زیر دستورات مرحله به مرحله وجود دارد که می توانید با استفاده از آن ، دستی Memcache php را از کنسول نصب کنید

Apt-get install php5-dev libmemcache-dev pecl download memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure --enable-memcache && make module module / memcache.so / usr / lib / php5 / 20060613 / echo "پسوند \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

راه اندازی مجدد Apache برای اعمال تغییرات

راه اندازی مجدد سرویس apache2

چگونه بررسی کنیم Memcached در حال کار است یا خیر

بیایید یک پرونده memcachetest.php را در ریشه سایت ایجاد کنیم و کد زیر را در آنجا بنویسید

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

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

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

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

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

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

بنابراین ، بیایید بگوییم که ما سایتی داریم https: // site

Cd / var / www / site

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

Mkdir phpMemcachedAdmin && cd phpMemcachedAdmin

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

ابزارک http://phpmemcacheadmin.googlecode.com/files/phpMemcachedAdmin-1.2.2-r262.tar.gz

بایگانی را با کیت توزیع باز کنید و پاک کنید

Tar -xvzf phpMemcachedAdmin-1.2.2-r262.tar.gz && rm -rf phpMemcachedAdmin-1.2.2-r262.tar.gz

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

یافتن ./-نوع f -exec chmod 0644 () \\؛ یافتن ./-نوع d -exec chmod 0755 () \\؛

AuthType Basic AuthName "منطقه خصوصی" AuthUserFile .htpasswd نیاز به کاربر memcachedmanager

ایجاد.htpasswd

htpasswd -c .htpasswd memcachedmanager

لطفا رمز عبور خود را وارد کنید.

این همه اگر آنرا تغییر نکرده اید وارد دایرکتوری memcachedmanager شوید. https: // site / phpMemcachedAdmin را باز کنید (دامنه را به خود تغییر دهید) ، نام کاربری / رمزعبور خود را وارد کنید و استفاده کنید

سرانجام

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

امروز من یک کد کوچک را به شما ارائه می دهم که نحوه تعامل با Memcache را به شما یاد می دهد. برای نصب Mediatemple در هاستینگ ، به داده SSH نیاز دارید.

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

Memcache توسط Danga Interactive برای سرعت بخشیدن به LiveJournal.com ایجاد شده است. Memcache باعث کاهش زمان بار از بانک اطلاعاتی به تقریباً صفر می شود و این باعث افزایش سرعت بارگذاری صفحه برای کاربران ، مدیریت سریعتر منابع و غیره می شود. FaceBook در حال حاضر بزرگترین کاربر خدمات Memcache است. با توجه به تعداد افرادی که هر روز در فیس بوک می آیند ، وی تقریباً این سرویس را تردید می کرد - و مکانی جداگانه برای آنها اختصاص می یافت.

Memcache چیست؟

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

Memcache 5 عملکرد را ارائه می دهد:

  • دریافت () - مقدار را با کلید بازیابی می کند
  • set () - مقدار را تعیین می کند
  • add () - در صورت وجود ، حافظه پنهان را اضافه می کند
  • جایگزین () - حافظه نهان را جایگزین می کند
  • flush () - همه دادههای ذخیره شده را ذخیره می کند

کد

پس از نصب Memcache ، می توانید شروع به استفاده از آن کنید. اعتقاد بر این است که حافظه پنهان زیادی خراب است. من کاملاً با آن مخالفم! هرچه سرعت سایت شما بیشتر شود ، بهتر می شود!

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

$ memcache \u003d Memcache جدید؛ $ memcache-\u003e اتصال ("127.0.0.1" ، 11211) یا بمیرید ("اتصال برقرار نیست")؛ شامل ("شامل / اتصال.php")؛ // ایجاد یک کلید ، سپس کلید حافظه پنهان $ $ \u003d md5 را بررسی کنید ("SELECT * از memcached_test که در آن name \u003d" ashley "")؛ $ get_result \u003d $ memcache\u003e دریافت (کلید $)؛ if ($ get_result) (echo $ get_result ["name"]؛ echo $ get_result ["نام کاربری"]؛ echo "Data Pulled From Cache"؛) other (// گرفتن داده از بانک اطلاعاتی و ایجاد حافظه پنهان $ query \u003d "SELECT *) FROM memcached_test که name \u003d "ashley"؛ "؛ $ result \u003d mysql_query ($ query)؛ $ row \u003d mysql_fetch_array ($ $)؛ print_r ($ row)؛ $ memcache\u003e set (کلید $، $ row، TrUE، 20) ؛ // نتیجه را به مدت 20 ثانیه با صدای بلند "داده های کشیده شده از پایگاه داده" ذخیره کنید ؛)

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

زنگ

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