توصیه می شود یک شتاب دهنده اسکریپت php نصب کنید که بار روی وب سرور شما را کاهش دهد. شتاب دهنده متداول ترین اسکریپت های php را جمع آوری می کند و در صورت دسترسی، نه کد منبع، بلکه نسخه کامپایل شده آن را بارگیری می کند. با توجه به تسریع در اجرا و نمایش سایت شما. این امر به ویژه در CMS های "سنگین" مانند Bitrix قابل توجه است.

برای نصب شتاب دهنده APC، ابتدا باید XCode c را با کامپوننت نصب کنید خط فرمان.

پس از به‌روزرسانی Mac OS X به نسخه 10.9 Maverick، باید مؤلفه خط فرمان را مجدداً نصب کنید. الان از طریق نصب نمیشه رابط کاربری گرافیکیو با استفاده از خط فرمان: xcode-select --install

در غیر این صورت، هنگام نصب پسوندها با استفاده از pecl، با خطای "فایل php.h یافت نشد" مواجه خواهید شد.

./configure make sudo make install

sudo pecl نصب apc

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

اگر این دستور ناموفق باشد، به احتمال زیاد PEAR و PECL را نصب نکرده اید. آنها باید با استفاده از دستور curl دانلود و نصب شوند

Curl -O http://pear.php.net/go-pear.phar sudo php -d detect_unicode=0 go-pear.phar

هنگامی که در مورد پیکربندی PEAR سؤال می شود، باید پارامترهای 1 و 4 را تصحیح کنید. جایی که وجود خواهد داشت.

11. نام فایل پیکربندی:

1-11، "همه" یا Enter برای ادامه:

اول پاسخ دهید 1. و آدرس را وارد کنید:

/usr/local/pear

سپس 4 را پاسخ دهید و آدرس زیر را وارد کنید

پس از آن enter را فشار دهید. PEAR نصب شده است. می توانید با دستور بررسی کنید

نسخه گلابی

سپس دوباره امتحان کنید

این بار با پیغام زیر ریجکت شدم

تنظیم خودکار پیدا نمی شود. لطفاً نصب autoconf خود را بررسی کنید

متغیر محیطی $PHP_AUTOCONF. سپس، این اسکریپت را دوباره اجرا کنید.

خطا: «phpize» ناموفق بود

برای رفع این خطا باید autoconfig را با دستورات ترمینال زیر دانلود و نصب کنید

Curl http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz > autoconf.tar.gz tar -xvzf autoconf.tar.gz سی دی autoconf-* ./configure --prefix=/usr/local sudo make install

پس از نصب autoconfig دستور به صورت زیر است:


sudo pecl نصب apc

تمام سوالاتی که هنگام کامپایل APC پرسیده می شود با ورودی پیش فرض پاسخ داده می شود. اگر سوال

اشکال زدایی داخلی را در APC فعال کنید: y

در این حالت، هنگام اجرای کد، ممکن است از خود APC پیام های خطای اجرا دریافت کنید. پاسخ صحیح خیر است.

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

راه اندازی مجدد sudo apachectl

اگر APC را پس از به‌روزرسانی به Mavericks دوباره نصب کنید، ممکن است مشکلی در ارتباط با وجود نسخه قدیمی phpize در این مورد، دستورات زیر می توانند به به روز رسانی پیکربندی pecl sudo pear config-set php_ini /etc/php.ini sudo pecl config-set bin_dir /usr/bin/ کمک کنند.

باید مطمئن شوید که یک خط در فایل /etc/php.ini وجود دارد و در صورت لزوم آن را اضافه کنید.

پسوند=apc.so

و دوباره آپاچی را ریستارت کنید.

بررسی در phpinfo()


Bitrix نیاز به نصب دارد گزینه های اضافی. تنظیمات APC در فایل موجود است

من گزینه های زیر را برای خودم تنظیم کرده ام:

Apc.ttl=7200
apc.max_file_size=64M
apc.shm_size = 64M

تغییر در عملکرد (طبق مانیتور عملکرد Bitrix) از 10.62 واحد به 40.52 چه داده است)
این مثل همه است.

تنظیمات اولیه APC

  • apc.enabled- به شما امکان می دهد APC را فعال یا غیرفعال کنید
  • apc.shm_segmentsتعداد بخش های حافظه مشترکی است که apc از آنها استفاده خواهد کرد. برخی از سیستم ها محدود به حداکثر اندازهبخش، بنابراین می توانید apc را برای استفاده از چندین بخش پیکربندی کنید.
  • apc.shm_sizeاندازه یک بخش حافظه مشترک است که توسط apc استفاده می شود.
  • apc.ttl- چند ثانیه قبل از اینکه apc آن را بازنویسی کند نباید به یک ورودی کش دسترسی داشت.
  • apc.user_ttl- توضیحات همان apc.ttl است. معمولاً روی apc.ttl تنظیم می شود.
  • apc.stat- نشان می دهد که آیا apc باید زمان اصلاح اسکریپت php را بررسی کند یا خیر. اگر روی 0 تنظیم شود، apc تغییرات روی دیسک را بررسی نمی کند و یک کپی کش تولید می کند.

پیشرفت آپلود نصب Pecl

درست است، حقوق فوق کاربر (ریشه) ممکن است مورد نیاز باشد

sudo apt-get نصب php-apc - کار نمی کند

APC دیگر در اوبونتو 14.04 مورد نیاز نیست. APC در PHP 5.5 پشتیبانی نمی‌شود، که در عوض حافظه پنهان Opcache داخلی خود را دارد. مطمئن شوید که کش فعال است، فایل /etc/php5/apache2/php.ini را ویرایش کنید.
جایگزین کردن:

;opcache.enable=0

Opcache.enable=1

سپس مطمئن شوید که ماژول php فعال است:

# php5enmod opcache

در نهایت آپاچی را ریستارت کنید:

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

معاینه:

http:// /info.php

یک فایل info.php با محتوای زیر در ریشه دایرکتوری ایجاد کنید وب سرورها/var/www/html/

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

Zend OPcache Opcode Caching و اجرای بهینه سازی فعال و غیره.

نحوه نصب کش جایگزین PHP (APC) در اوبونتو 12.04

نصب از PECL

برای نصب از مخزن اوبونتوزیر را ببینید.

در مورد APC
APC یک سیستم ذخیره کد عملیات عالی برای PHP است که می تواند به افزایش سرعت سایت شما کمک کند. PHP یک زبان برنامه نویسی پویا در سمت سرور است که باید با هر درخواست صفحه توسط سرور تجزیه، کامپایل و اجرا شود. با این حال، در بسیاری از موارد، درخواست‌ها دقیقاً نتایج یکسانی را ایجاد می‌کنند، به این معنی که سرور ابری مجبور است تمام این مراحل را برای هر یک از آنها تکرار کند.
اینجاست که APC وارد عمل می شود. کاری که انجام می دهد این است که اپکد PHP (کد عملیات) را در حافظه رم ذخیره می کند و در صورت درخواست مجدد، آن را از آنجا اجرا می کند. در اصل، مراحل تجزیه و کامپایل را دور می زند و برخی از بارهای غیر ضروری را در سرور ابری به حداقل می رساند.

فرض بر این است که شما VPS خود را با امتیازات ریشه و LAMP نصب کرده اید.

ابتدا بسته ها را نصب کنید:

sudo apt-get نصب php-pear php5-dev ساخت libpcre3-dev

اکنون می توانید APC را با استفاده از دستور pecl نصب کنید:

sudo pecl نصب apc

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

مرحله بعدی و آخرین مرحله ویرایش فایل php.ini است

اضافه کردن خط در پایان:

extension=apc.so

فایل را ذخیره کنید و Apache را مجددا راه اندازی کنید:

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

برای بررسی فعال بودن APC، صفحه را بررسی کنید اطلاعات PHP. اگر ندارید، آن را در پوشه /var/www ایجاد کنید:

نانو /var/www/info.php

و کد را قرار دهید:

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

راه اندازی APC

شما APC را نصب کرده اید و با تنظیمات پیش فرض در حال اجرا است. حداقل دو تنظیم وجود دارد که باید از آنها آگاه باشید. php.ini را که قبلا ویرایش کرده اید باز کنید:

سودو نانو /etc/php5/apache2/php.ini

زیر خطی که APC را فعال کردید، اضافه کنید:

Apc.shm_size = 64

این به APC اجازه می دهد تا از 64 مگابایت رم برای کش استفاده کند. بسته به پیکربندی، می توانید این مقدار را تغییر دهید.
خط بعدی برای افزودن:

apc.stat = 0

گزینه apc.stat اسکریپت را در هر درخواست بررسی می کند تا ببیند آیا تغییر کرده است یا خیر. اگر اسکریپت تغییر کرده باشد، APC آن را مجدداً کامپایل و کش می کند نسخه جدید. این رفتار پیش فرض APC پس از نصب است. با تنظیم مقدار پارامتر روی 0 به APC می گوییم تغییرات اسکریپت را بررسی نکند. این عملکرد را بهبود می بخشد، اما اگر اسکریپت اصلاح شده باشد، تا زمانی که سرور راه اندازی مجدد نشود، تغییرات اعمال نمی شود. بنابراین، مقدار 0 توصیه می شود فقط در سرور تولیدی که در آن وجود ندارد استفاده شود تغییر مداومکد

مانیتورینگ APC
یک اسکریپت کوچک برای نظارت بر وضعیت و عملکرد حافظه پنهان APC وجود دارد.

می‌توانید فایل apc.php را از /usr/share/php/ در پوشه کاری سرور وب کپی کنید، برای مثال /vwr/www:

Cp /usr/share/php/apc.php /var/www - برای نصب از pecl

یا دانلود کنید:

Wget http://pecl.php.net/get/APCu -O - | tar xz --wildcards apcu*/apc.php

حالا از مرورگر به این فایل دسترسی پیدا کنید:

http:// /apc.php

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

نصب کش APC از مخزن اوبونتو

$ sudo apt-get نصب php-apc

Apache را ریستارت کنید و به info.php نگاه کنید. بخش APC (Enabled On) باید ظاهر شود.
برای نظارت، از ابزار موجود در بسته استفاده کنید:

cd /usr/share/doc/php-apc # gunzip apc.php.gz

برای مثال فایل apc.php را در /var/www کپی کنید
دسترسی به فایل از مرورگر:

http:// /apc.php

خطا:
هیچ اطلاعات حافظه پنهان موجود نیست. APC نمی کندبه نظر می رسد در حال اجرا است.

اگر رمز عبوری در کد apc.php تنظیم نشده باشد ظاهر می شود.
ویرایش فایل apc.php:

#vi /var/www/apc.php

و نام کاربری و رمز عبور را تنظیم کنید:

پیش فرض ها ("ADMIN_USERNAME"، "apc"); // Admin Username defaults("ADMIN_PASSWORD", "pass"); // رمز عبور مدیریت - این را برای فعال کردن تغییر دهید!!!

پیش فرض ها ("USE_AUTHENTICATION"،0);

گزینه های اضافی در /etc/php5/apache2/conf.d/apc.ini

;apc.enabled=1 - نامربوط;apc.enable_cli=1 - نامرتبط

APCمخفف آن است حافظه پنهان PHP جایگزین. متن روسی یک حافظه کش جایگزین PHP است. آن برای چه کاری استفاده می شود؟ مانند سایر کش های محبوب مانند XCache و eAccelerator، برای افزایش سرعت اسکریپت های PHP استفاده می شود. اگر سرور خود را دارید و نگران عملکرد اسکریپت های PHP هستید، APC می تواند راه حلی برای مشکل شما باشد. در مقاله امروز با APC بیشتر آشنا می شویم، نحوه نصب و تست آن، استفاده از کش APC هنگام نوشتن اسکریپت های PHP را یاد می گیریم.

امروز متوجه خواهیم شد

شتاب دهنده APC چیست؟

شتاب دهندهAPC(Alternative PHP Cache) یک کش اپکد آزاد و باز برای PHP است. این به عنوان یک چارچوب ذخیره سازی رایگان، باز و پایدار و بهینه سازی در نظر گرفته شد. کد منبع PHP. APC در مرحله توسعه است. در حال حاضر از PHP 4 و PHP 5 از جمله 5.3 پشتیبانی می کند. احتمالاً در هسته استاندارد PHP نسخه ششم گنجانده شده است.

شتاب چگونه حاصل می شود؟پی اچ پی؟

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

در همان زمان، اعدام تدوین کددر هر درخواست پردازش درخواست زمان زیادی می برد و در نتیجه کند می شود. برای دور زدن این موضوع، آنها شتاب دهنده هایی را ارائه کردند که APC نماینده آنهاست. آنها کد کامپایل شده را روی دیسک ذخیره می کنند و پس از آن نتیجه را چاپ می کند. این باعث افزایش سرعت می شود PHP کار می کند. APC می تواند در دو حالت کار کند که در فایل پیکربندی شده اند /etc/php.d/apc.ini، متغیر apc.stat. متغیر می تواند مقادیر 1 و 0 (apc.stat=0 یا apc.stat=1) را بگیرد. استفاده از حالت apc.stat=1 سرعت اسکریپت‌ها را کمی کند می‌کند و تغییرات فایل را بررسی می‌کند، اما با تغییر کد از بروز مشکل جلوگیری می‌کند و خروجی نتیجه ثابت می‌ماند. بنابراین به شما توصیه می کنم که مقدار متغیر را 1 قرار دهید.

پس از نصب شتاب دهنده APC، طرح اجرای پرس و جو به صورت زیر خواهد بود:

نصب APC

نصب APC بسیار آسان است. می توان آن را هم بر روی دبیان/اوبونتو و هم در توزیع های دیگر نصب کرد.

نصب APC در CentOS، RHEL، Fedora:

ما از طریق PECL نصب خواهیم کرد. اول، ما .repo را شامل می‌کنیم که حاوی APC واقعی است. مثال زیر را ببینید:

wget http://rpm.scwlab.com/el/php/yum.conf -O /etc/yum.repos.d/stalwart.repo

yum php-pecl-apc را نصب کنید

حال تنظیمات فایل /etc/php.d/apc.ini را به دلخواه تغییر دهید و سرور را ریستارت کنید.

نصب APC در دبیان، اوبونتو

apt-get install apache2-threaded-dev php5-dev php5-pear make gcc g++

pecl نصب apc

پس از دانلود، فایل را در /etc/php5/apache2/php.ini باز کنید، پارامتر را اضافه کنید. extension=apc.so، و سرور را مجددا راه اندازی کنید.

همانطور که می بینید، نصب APC در دبیان یا اوبونتو بسیار ساده است، باید دستور را در کنسول تایپ کنید. sudo aptitude php-apc را نصب کنید. همچنین می توانید این افزونه را از طریق نصب کنید سیناپسی. اگر توزیع متفاوتی دارید، می توانید بسته APC را از PECL نصب کنید. برای این کار دستور زیر را در کنسول اجرا کنید sudo pecl نصب apc.

بررسی وجود بستهAPC

اگر خط بارگذاری بسته در فایل تنظیمات php.ini وجود دارد extension=apc.so. یا یک فایل apc.ini با یک خط یکسان در پوشه پیکربندی پسوندهای PHP ایجاد شده است. هر توزیع آدرس مخصوص به خود را دارد. برای دبیان، این /etc/php5/apache2/conf.d/ است.

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



استفاده از APC در PHP

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

برای شروع، یک کلاس برای کار با حافظه از طریق سیستم کش APC می نویسیم. یک فایل ایجاد کنید و کد را در آدرس زیر قرار دهید:

classes/apc.caching.php

bEnabled = extension_loaded ("apc"); ) // دریافت داده از تابع حافظه getData($sKey) ($bRes = false; $vData = apc_fetch($sKey, $bRes)؛ بازگشت ($bRes) ? $vData:null; ) // ذخیره داده در عملکرد حافظه setData($sKey، $vData) ( apc_store ($sKey، $vData، $this->iTtl) را برگردانید؛ ) // داده ها را از تابع حافظه delData($sKey) حذف کنید ($bRes = false؛ apc_fetch($sKey، $ bRes)؛ بازگشت ($bRes) ? apc_delete($sKey): true; ) ) ?>

کلاس توضیح می دهد که هر تابع چه کاری انجام می دهد. حالا بیایید یک فایل تست بسازیم.

index.php

"جدول"، "رنگ" => "قهوه ای"، "اندازه" => آرایه("x" => 200، "y" => 120، "z" => 150،)، "قدرت" => 10، ) require_once("classes/apc.caching.php"); $oCache = جدید CacheAPC(); echo "داده:

"; // بیایید ببینیم چه چیزی داریم print_r($aData); echo "
"؛ if ($oCache->bEnabled) ( // اگر APC موجود است $oCache->setData("my_object", $aData)؛ // ذخیره داده ها در حافظه $oCache->setData("our_class_object", $oCache) ; // ذخیره شی کلاس در حافظه echo "در تئوری، ما داده ها را در حافظه ذخیره می کنیم، اینجا را کلیک کنید تا بررسی کنید که آیا همه چیز واقعا آنجاست یا نه." ;) ?>

در این فایل ما 2 شی را در حافظه ذخیره کرده ایم: یک آرایه و یک شی کلاس. حالا بیایید فایل دوم را ایجاد کنیم.

index2.php

bEnabled) (// اگر APC در دسترس باشد $aMemData = $oCache->getData("my_object")؛ // دریافت داده از حافظه $aMemData2 = $oCache->getData("our_class_object")؛ // دریافت داده از حافظه که در کلاس echo "داده در حافظه:

"; // بررسی کنید چه چیزی در حافظه داریم print_r($aMemData); echo "
"; echo "همانطور که می بینید، همه داده ها در دسترس هستند، حالا بیایید آن ها را از حافظه بازیابی کنیم، برای این کار به اینجا می رویم..."؛ ) else ( echo "بسته APC نصب نشده است، آن را نصب کنید، و سپس تست خواهید کرد. آن!"؛) ?>

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

index3.php

bEnabled) (// اگر APC در دسترس باشد $oCache->delData("my_object")؛ // بازیابی داده ها از حافظه $oCache->delData("our_class_object")؛ // بازیابی داده ها از حافظه $aMemData = $oCache-> getData ("my_object")؛ // تلاش برای بازگرداندن داده ها $aMemData2 = $oCache->getData("our_class_object")؛ اکو "داده ها از حافظه:

"; // بررسی کنید چه چیزی در حافظه داریم print_r($aMemData); echo "
"؛ echo "داده های حافظه شی کلاس CacheAPC:
"; print_r($aMemData2); echo "
"؛ echo "همانطور که می بینید، تمام داده ها از حافظه بازیابی شده است. هورا!"؛ ) else ( echo "بسته APC نصب نشده است، بعدا نصب و تست کنید!") ?>

نتیجه

با تشکر از توجه شما! امیدوارم از خواندن در مورد استفاده لذت برده باشیدAPC هاPHP. اگر ایده دیگری در مورد استفاده داریدAPC هنگام نوشتناسکریپت های PHP، در مورد آن در نظرات بنویسید.


APCمخفف آن است حافظه پنهان PHP جایگزین. متن روسی یک حافظه کش جایگزین PHP است. آن برای چه کاری استفاده می شود؟ مانند سایر کش های محبوب مانند XCache و eAccelerator، برای افزایش سرعت اسکریپت های PHP استفاده می شود. اگر سرور خود را دارید و نگران عملکرد اسکریپت های PHP هستید، APC می تواند راه حلی برای مشکل شما باشد. در مقاله امروز با APC بیشتر آشنا می شویم، نحوه نصب و تست آن، استفاده از کش APC هنگام نوشتن اسکریپت های PHP را یاد می گیریم.

شتاب دهنده APC چیست؟

شتاب دهندهAPC(Alternative PHP Cache) یک کش اپکد آزاد و باز برای PHP است. این به عنوان یک چارچوب رایگان، باز و پایدار برای ذخیره سازی و بهینه سازی کد منبع PHP در نظر گرفته شد. APC در مرحله توسعه است. در حال حاضر از PHP 4 و PHP 5 از جمله 5.3 پشتیبانی می کند. احتمالاً در هسته استاندارد PHP نسخه ششم گنجانده شده است.
شتاب چگونه حاصل می شود؟پی اچ پی؟
هنگامی که بارگذاری سایت شما با تاخیر مواجه می شود، این سوال پیش می آید - چرا؟ واقعیت این است که هنگام انجام یک فراخوانی استاندارد به یک اسکریپت PHP، هر بار از نو کامپایل می شود. یعنی همان کار چندین بار انجام می شود. اگر پروژه کوچکی باشد، کاهش سرعت ممکن است جزئی و حتی نامرئی باشد. اما اگر پروژه (وب سایت) بزرگی دارید، متوجه شده اید که هنگام دسترسی به آن، با وجود اینکه سایت از نظر فشرده سازی html و فشرده سازی css به خوبی بهینه شده است، بارگذاری صفحه با تاخیر مواجه می شود. برای وضوح، بیایید ببینیم که چگونه یک درخواست استاندارد بدون استفاده از شتاب دهنده های PHP اجرا می شود:

در همان زمان، اعدام تدوین کددر هر درخواست پردازش درخواست زمان زیادی می برد و در نتیجه کند می شود. برای دور زدن این موضوع، آنها شتاب دهنده هایی را ارائه کردند که APC نماینده آنهاست. آنها کد کامپایل شده را روی دیسک ذخیره می کنند و پس از آن نتیجه را چاپ می کند. این باعث افزایش سرعت PHP می شود. APC می تواند در دو حالت کار کند که در فایل پیکربندی شده اند /etc/php.d/apc.ini، متغیر apc.stat. متغیر می تواند مقادیر 1 و 0 (apc.stat=0 یا apc.stat=1) را بگیرد. استفاده از حالت apc.stat=1 سرعت اسکریپت‌ها را کمی کند می‌کند و تغییرات فایل را بررسی می‌کند، اما با تغییر کد از بروز مشکل جلوگیری می‌کند و خروجی نتیجه ثابت می‌ماند. بنابراین به شما توصیه می کنم که مقدار متغیر را 1 قرار دهید.
پس از نصب شتاب دهنده APC، طرح اجرای پرس و جو به صورت زیر خواهد بود:

نصب APC Accelerator

از آنجایی که در apt نسخه های به روز شدهخیلی دیر اضافه شد بنابراین، ما APC را از طریق PECL نصب می کنیم:

sudo apt-get حذف --purge php-apc sudo apt-get install libpcre3-dev sudo pecl install apc
در حین نصب، پیکربندی زیر (YMMV) را تنظیم می کنیم:
فعال کردن اشکال زدایی داخلی در APC : نه فعال کردن اطلاعات فایل به ازای درخواست در مورد فایل های استفاده شده از حافظه پنهان APC : نه فعال کردن قفل چرخشی (تجربی) : نه فعال کردن حفاظت از حافظه (تجربی) : نه فعال کردن mutexes pthread (پیش فرض) : بله فعال کردن خواندن/نوشتن pthread قفل (تجربی) : ندارد اکنون باید APC را در تنظیمات فعال کنید، زیرا. این به طور خودکار انجام نمی شود. برای این ما ایجاد می کنیم فایل apc.ini در دایرکتوری مناسب: sudo vim /etc/php5/conf.d/apc.ini و تنظیمات زیر را در این فایل بنویسید (برای کار با مجنتو توصیه می شود) extension=apc.so apc.enabled=1 apc.shm_size=512M apc.num_files_hint=10000 apc.user_entries_hint=10000 apc.max_file_size=5M apc.stat=0 apc.num_files_hint=10000 apc.cache_by_default=1 apc.include_once_override=1

پشتیبانی APC را در مجنتو فعال کنید

فایل پیکربندی Magento را باز کنید: vi app/etc/local.xml و کد زیر را به بخش global اضافه کنید:


فایل apc 0 1 MAGE_ یا پایگاه داده apc 0 1 MAGE_


جایی که بین تگ های "پیشوند" مشخص شده است توضیح کوتاهذخیره کنید تا بتوانید از APC برای کش کردن چندین فروشگاه ساخته شده بر روی یک Magento استفاده کنید.

چگونه بررسی کنیم که آیا APC کار می کند؟

اول از همه، شما باید به آن توجه کنید اسکریپت های پی اچ پی Magento سریعتر شود. استفاده کنید Firebug و افزونه ای برای آن مانند YSlow برای ارزیابی سرعت سایت. می توانید افزونه Firebug را برای فایرفاکس از اینجا دانلود کنید. همچنین، می‌توانید فایل apc.php را با کپی کردن آن از پوشه توزیع APC در عمومی پروژه شما: sudo cp /usr/share/php/apc.php /مسیر عمومی شما اکنون می توانید این فایل را در مرورگر خود باز کنید: http://yourhost.local/apc.php

رفتار این توابع به تنظیمات موجود در php.ini بستگی دارد.

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

هنگام پیکربندی APC، باید به دو نکته اصلی توجه کرد. اولین مورد این است که چه مقدار حافظه باید در اختیار APC قرار دهد، و دوم اینکه آیا APC بررسی می کند که آیا فایل در هر درخواست اصلاح شده است یا خیر. این تنظیمات پارامترها هستند apc.shm_sizeو apc.stat، به ترتیب. لطفا بخش های مربوط به تنظیم این پارامترها را با دقت مطالعه کنید.

پس از راه اندازی سرور، اسکریپت apc.phpضمیمه شده با این پسوند، باید در "docroot" کپی شود و باید مجوز اجرای آن را از طریق مرورگر داشته باشد. این اسکریپت اطلاعات دقیقی در مورد عملکرد APC ارائه می دهد. اگر GD در PHP فعال باشد، این اسکریپت نمودارهای مفیدی را نیز نشان می دهد. البته اولین چیزی که باید به آن علاقه داشت این است که آیا APC چیزی را در حافظه پنهان ذخیره می کند یا خیر. اگر APC در حال اجرا است، مقدار شمارش کامل حافظه پنهان(سمت چپ) تعداد دفعاتی را نشان می دهد که حافظه پنهان به طور کامل پر می شود و مجبور به حذف اجباری ورودی هایی شده است که آخرین بار به آنها دسترسی نداشته اند. apc.ttlثانیه هرچه این عدد کوچکتر باشد، کش بهتر پیکربندی می شود. اگر این تعداد دائماً در حال افزایش است، APC باید دائماً رکوردهای قدیمی را پاک کند و بنابراین کل نکته ذخیره سازی از بین می رود. اکثر بهترین راهکاهش این عدد به معنای افزودن حافظه بیشتر برای APC است. اگر این کار انجام نشد، باید پیکربندی مجدد را انجام دهید فیلترهای apcبرای محدود کردن مجموعه ای از اسکریپت های حافظه پنهان.

اگر APC با پشتیبانی mmap (Memory Mapping) ساخته شود، تنها از یک بخش حافظه استفاده می کند، اگر برعکس، APC با پشتیبانی از SHM (SysV Shared Memory) ساخته شود، از چندین بخش استفاده می کند. MMAP بر خلاف SHM که محدود است محدودیت حداکثری ندارد /proc/sys/kernel/shmmax. به طور کلی توصیه می شود از MMAP استفاده کنید زیرا با راه اندازی مجدد وب سرور، حافظه را بسیار سریعتر تخصیص می دهد که بر سرعت راه اندازی سرور تأثیر می گذارد.

پارامترهای پیکربندی APC
نام پیش فرض محل تغییر لیست تغییرات
apc.enabled "1" PHP_INI_SYSTEM PHP_INI_SYSTEM در APC 2. PHP_INI_ALL در APC<= 3.0.12.
apc.shm_segments "1" PHP_INI_SYSTEM
apc.shm_size "32M" PHP_INI_SYSTEM
apc.shm_strings_buffer "4M" PHP_INI_SYSTEM از APC 3.1.4 موجود است.
apc.optimization "0" PHP_INI_ALL PHP_INI_SYSTEM در APC 2. در APC 3.0.13 حذف شد.
apc.num_files_hint "1000" PHP_INI_SYSTEM
apc.user_entries_hint "4096" PHP_INI_SYSTEM از APC 3.0.0 در دسترس است.
apc.ttl "0" PHP_INI_SYSTEM از APC 3.0.0 در دسترس است.
apc.user_ttl "0" PHP_INI_SYSTEM از APC 3.0.0 در دسترس است.
apc.gc_ttl "3600" PHP_INI_SYSTEM
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM در APC<= 3.0.12. Доступно с APC 3.0.0.
فیلترهای apc خالی PHP_INI_SYSTEM
apc.mmap_file_mask خالی PHP_INI_SYSTEM
apc.slam_defense "1" PHP_INI_SYSTEM از APC 3.0.0 در دسترس است. قبل از APC 3.1.4، مقدار پیش فرض "0" (معلول).
apc.file_update_protection "2" PHP_INI_SYSTEM از APC 3.0.6 در دسترس است.
apc.enable_cli "0" PHP_INI_SYSTEM از APC 3.0.7 در دسترس است.
apc.max_file_size "1M" PHP_INI_SYSTEM از APC 3.0.7 در دسترس است.
apc.use_request_time "1" PHP_INI_ALL از APC 3.1.3 در دسترس است.
apc.stat "1" PHP_INI_SYSTEM از APC 3.0.10 در دسترس است.
apc.write_lock "1" PHP_INI_SYSTEM از APC 3.0.11 در دسترس است.
apc.report_autofilter "0" PHP_INI_SYSTEM از APC 3.0.11 در دسترس است.
apc.serializer "پیش فرض" PHP_INI_SYSTEM از APC 3.1.0 در دسترس است.
apc.include_once_override "0" PHP_INI_SYSTEM از APC 3.0.12 در دسترس است.
apc.rfc1867 "0" PHP_INI_SYSTEM از APC 3.0.13 در دسترس است.
apc.rfc1867_prefix "بارگذاری_" PHP_INI_SYSTEM
apc.rfc1867_name "APC_UPLOAD_PROGRESS" PHP_INI_SYSTEM
apc.rfc1867_freq "0" PHP_INI_SYSTEM
apc.rfc1867_ttl "3600" PHP_INI_SYSTEM از APC 3.1.1 موجود است.
apc.localcache "0" PHP_INI_SYSTEM
apc.localcache.size "512" PHP_INI_SYSTEM موجود در APC 3.0.14 - 3.1.11.
apc.coredump_unmap "0" PHP_INI_SYSTEM از APC 3.0.16 در دسترس است.
apc.stat_ctime "0" PHP_INI_SYSTEM از APC 3.0.13 در دسترس است.
apc.preload_path خالی PHP_INI_SYSTEM از APC 3.1.1 موجود است.
apc.file_md5 "0" PHP_INI_SYSTEM از APC 3.1.1 موجود است.
apc.canonicalize "1" PHP_INI_SYSTEM از APC 3.1.1 موجود است.
apc.lazy_functions 0 PHP_INI_SYSTEM از APC 3.1.3 در دسترس است.
apc.lazy_classes 0 PHP_INI_SYSTEM از APC 3.1.3 در دسترس است.
برای توضیح دقیق ثابت های PHP_INI_*، به کجا می توان گزینه های پیکربندی را تنظیم کرد مراجعه کنید.

توضیح مختصری در مورد دستورالعمل های پیکربندی.

اگر تنظیم شود apc.enabledروی 0 تنظیم کنید، سپس APC فعال نخواهد شد. این زمانی مفید است که APC به صورت ایستا در PHP فعال باشد و هیچ گزینه دیگری برای غیرفعال کردن استفاده از آن وجود نداشته باشد. اگر APC به‌عنوان یک DSO ساخته شده است، می‌توانید به سادگی در خط اظهار نظر کنید افزونهکه در php.ini.

Apc.shm_segments عدد صحیح

تعداد بخش های حافظه مشترک اختصاص داده شده برای حافظه پنهان. اگر APC تمام حافظه مشترک موجود را مصرف کرده باشد، و apc.shm_sizeتا آنجایی که سیستم اجازه می دهد، افزایش این تنظیم ممکن است کمک کند.

Apc.shm_size رشته

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

Apc.shm_strings_buffer رشته

مقدار حافظه تخصیص یافته به حافظه پنهان رشته مشترک که توسط فرآیندهای داخلی APC استفاده می شود. اندازه باید با پسوند M یا G خاتمه یابد تا به ترتیب مگابایت و گیگابایت را نشان دهد. استفاده از این گزینه می‌تواند ردپای حافظه فرآیندهای کارگر PHP-FPM را کاهش دهد، زیرا رشته‌های یکسان فقط یک بار در حافظه ذخیره می‌شوند و می‌توانند توسط همه فرآیندهای کارگر استفاده شوند.

بهینه سازی برنامه عدد صحیح

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

Apc.num_files_hint عدد صحیح

به تعداد فایل های منحصر به فرد استفاده شده در سایت خود اشاره کنید. روی صفر تنظیم کنید یا اگر مطمئن نیستید اصلاً مشخص نکنید. این تنظیم زمانی مفید است که هزاران فایل دارید.

Apc.user_entries_hint عدد صحیح apc.file_update_protection عدد صحیح

هنگامی که یک فایل در حال تغییر است، باید به صورت اتمی انجام شود. یعنی ابتدا باید در یک فایل موقت نوشته شود و سپس منتقل شود ( mv) به موقعیت هدف خود برسد. بسیاری از ویرایشگرهای متن cp, تارو دیگران ندارند. این ممکن است باعث شود که فایل در زمان نوشتن درخواست (و کش) شود. تنظیمات apc.file_update_protectionتأخیر کش را برای فایل های جدید تنظیم می کند. پیش فرض 2 ثانیه است. این بدان معنی است که اگر تمبر زمانی اصلاح فایل ( mtime) می گوید که اگر کمتر از 2 ثانیه از تغییر فایل گذشته باشد، کش نمی شود. فردی بدبخت که سعی می کند به یک فایل نیمه ذخیره شده دسترسی پیدا کند، رفتار عجیبی را مشاهده می کند، اما حداقل دوام زیادی نخواهد داشت. در صورتی که تمامی فایل های وب سرور به صورت اتمی آپدیت شوند، با استفاده از روش هایی مانند rsync(که به درستی به روز می شود)، سپس این رفتار را می توان با صفر کردن این پارامتر غیرفعال کرد. اگر سیستم ورودی/خروجی بیش از حد بارگیری شده باشد، ممکن است برخی به روز رسانی ها بیش از دو ثانیه طول بکشد و این تنظیم باید متناسب با آن افزایش یابد.

apc.enable_cli عدد صحیح

بیشتر برای تست و اشکال زدایی. این تنظیم APC را برای نسخه CLI PHP فعال می کند. در عملکرد عادی، اجرای یک APC که هر بار که یک اسکریپت را در کنسول اجرا می‌کنید، حافظه پنهان را ایجاد، پر می‌کند و از بین می‌برد، بهترین ایده نیست. اما برای اهداف آزمایش و اشکال زدایی، می توانید به راحتی APC را برای CLI فعال کنید.

Apc.max_file_size عدد صحیح

فایل های بزرگتر از این تنظیم را کش نمی کند. پیش فرض 1M است.

Apc.stat عدد صحیح

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

برای فایل‌هایی که از طریق include/required بارگذاری می‌شوند، این گزینه عالی کار می‌کند، اما توجه داشته باشید که وقتی فایلی را با یک مسیر نسبی اضافه کنید (در یونیکس، این مسیری است که با / شروع نمی‌شود)، APC منحصربه‌فرد بودن را بررسی می‌کند. اگر از مسیرهای مطلق استفاده شود، APC از این بررسی صرف نظر می کند و از مسیر مطلق به عنوان شناسه فایل منحصر به فرد استفاده می کند.

Apc.write_lock بولی

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

Apc.report_autofilter بولی

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

Apc.serializer رشته

به APC می گوید از سریال ساز شخص ثالث استفاده کند.

Apc.include_once_override بولی

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

توجه

این قابلیت است تجربی. ممکن است رفتار این دستورالعمل، نام و مستندات آن بدون اطلاع قبلی در نسخه‌های بعدی APC تغییر کند. با مسئولیت خود از آن استفاده کنید.

Apc.rfc1867 بولی

قلاب پیشرفت آپلود فایل RFC1867 تنها زمانی در APC موجود است که با PHP 5.2.0 و بالاتر ساخته شود. در صورت فعال بودن، هر فایلی که در سرور آپلود می‌شود، در فرم، قبل از فیلد حاوی فایل، فیلد با نام APC_UPLOAD_PROGRESS، APC را مجبور می کند تا به طور خودکار یک ورودی کش سفارشی فرم upload_ ایجاد کند. کلید، جایی که کلیدارزش فیلد است APC_UPLOAD_PROGRESS.

به یاد داشته باشید که زمینه پنهان APC_UPLOAD_PROGRESSباید با فایل به فیلد برود، در غیر این صورت کار نادرست خواهد بود.

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

توجه داشته باشید که نرختنها زمانی در دسترس خواهد بود که همه بارگیری‌های فعلی تکمیل شود.

مثال Beispiel #1 apc.rfc1867

print_r(apc_fetch("upload_ $_POST [APC_UPLOAD_PROGRESS]" ));
?>

نتیجه اجرای این مثال چیزی شبیه به این خواهد بود:

آرایه ( => 1142543 => 1142543 => 1828068.8 => تست => فایل => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix رشته

پیشوند کلیدی برای استفاده در ورودی حافظه پنهان کاربر ایجاد شده توسط عملکرد ردیابی پیشرفت دانلود rfc1867.

Apc.rfc1867_name رشته

نامی را برای یک فیلد فرم پنهان مشخص می کند که فرآیند آپلود APC را آغاز می کند و پسوند کلید حافظه پنهان کاربر را مشخص می کند.

Apc.rfc1867_freq رشته

تعداد دفعاتی که ورودی کاربر در حافظه پنهان در حین دانلود فایل به روز می شود. می توان آن را هم به صورت درصد و هم با تعیین اندازه در بایت مشخص کرد. در صورت تمایل می توانید از پسوندها استفاده کنید. "ک", "م"و "g"(بدون حساس به حروف کوچک و بزرگ) به ترتیب برای کیلوبایت، مگابایت و گیگابایت. اگر روی صفر تنظیم شود، به‌روزرسانی‌ها در سریع‌ترین زمان ممکن انجام می‌شوند، اما این ممکن است دانلود را کند کند.

Apc.rfc1867_ttl عدد صحیح

TTL برای رکوردهای rfc1867.

Apc.localcache بولی

کش سایه فرآیند غیرمسدود کننده محلی را فعال می کند، که تعداد قفل ها را در حین نوشتن حافظه پنهان کاهش می دهد.

Apc.localcache.size عدد صحیح

اندازه حافظه پنهان فرآیند سایه محلی باید به اندازه کافی بزرگ باشد، تقریباً نیمی از apc.num_files_hint.

Apc.coredump_unmap بولی

به APC اجازه می‌دهد سیگنال‌هایی مانند SIGSEGV را که در صورت داده شدن یک coredump می‌نویسد، رهگیری کند. هنگامی که این سیگنال ها دریافت می شوند، APC تلاش می کند تا تمام حافظه مشترک را آزاد کند تا در coredump گنجانده نشود. این تنظیم می‌تواند پایداری سیستم را هنگامی که یک سیگنال بحرانی دریافت شده و APC برای استفاده از مقدار زیادی حافظه پیکربندی شده است، افزایش دهد.

توجه

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

اظهار نظر:

اگرچه برخی از هسته‌ها توانایی نادیده گرفتن برخی از بخش‌های حافظه مشترک را هنگام نوشتن یک فایل اصلی فراهم می‌کنند، اما این پیاده‌سازی‌ها ممکن است بخش‌های مهم حافظه مانند تابلوی امتیاز آپاچی را نادیده بگیرند.

apc.stat_ctime عدد صحیح

بررسی در برابر ctime برای جلوگیری از مشکلات ناشی از برنامه‌هایی مانند svn یا rsync با اطمینان از اینکه inode از آخرین مجموعه آمار تغییر نکرده است. معمولا APC فقط mtime را چک می کند.

Apc.canonicalize بوول

اگر غیرفعال باشد، مسیرهای نسبی در حالت بدون وضعیت به متعارف تبدیل می‌شوند. در صورت فعال بودن، فایل‌های متصل شده از طریق بسته‌بندی جریان ذخیره نمی‌شوند، زیرا realpath()از بسته های جریانی پشتیبانی نمی کند.

Apc.preload_path رشته

اختیاری. مسیری را که APC برای بارگیری داده های کش در زمان راه اندازی استفاده می کند، مشخص می کند.

Apc.use_request_time بوول

از زمان شروع جستجوی SAPI برای TTL استفاده کنید.

Apc.file_md5 بوول

هش md5 ​​فایل ها را بنویسید.

Apc.lazy_functions عدد صحیح

اجازه می دهد بارگذاری تنبلکارکرد.

Apc.lazy_classes عدد صحیح

بارگیری کلاس تنبل را فعال می کند.