Alternative PHP Cache)APC) یک اضافه شونده به PHP سمت یک سرور وب است و همانطور که از نامش پیداست یک نوع کش (cache) محسوب میشود. هدف این کش این است که کدهای میانی و کامپایل شده PHP را کش و بهینهسازی کند. یعنی فایلی که توسط یک درخواست از کلاینت خواسته میشود را بعد از خواندن از هارد و کامپایل یا تفسیر آن، در حافظه سریع RAM ذخیره کند تا برای درخواستهای بعدی برای این فایل، نیازی به دوباره انجام دادن مراحل قبل از اجرا نباشد. هرچند زمان مراحل قبل از اجرا خیلی کم است ولی در یک وبسایت مشغول و پر از کاربران آنلاین، این مسئله چشمگیر خواهد بود.
علاوه بر کش کردن کد برنامه، قابلیت مهم دیگر، کش کردن دادهها است که به خوبی توسط این کش صورت میپذیرد و توابع مفیدی برای استفاده از این قابلیت به توابع PHP اضافه میکند که لیست این توابع را میتوانید از این لینک مشاهده کنید.
البته توجه کنید که این کش برای کش کردن دادهها در یک سرور واحد به کار میرود؛ ولی اگر سرور توزیع شده دارید باید از ممکش (Memcache) استفاده کنید. اگر سرورتان توزیع شده نیست روش بهتر این است که از کش APC که سریعتر است، استفاده شود.در مورد ممکش به همراه طریقه نصب قبلا در این لینک توضیح دادهایم.
در اینجا تنها نحوه نصب آن و اشکالاتی که ممکن است در نصب آن رخ دهد را شرح می دهیم. برای نصب آن باید به قسمت SSH یا اجرای Command دسترسی داشته باشید.
توجه: قبل از نصب، باید بدانید که این کش با برنامه Zend Optimizer برخورد دارد. یعنی هردو نمیتوانند نصب و اجرا شوند. پس قبل از نصب و اجرای کش، مطمئن شوید که Zend Optimizer نصب نیست (با مشاهده phpinfo) یا غیر فعال است. اگر از غیر فعال کردن برنامه Zend Optimizer میترسید باید گفت که این برنامه تنها برای اجرا کردن و بهینه سازی فایلهای PHP ای به کار میآید که توسط Zend Encoder انکود شده باشد و اگر چنین فایلهایی ندارید با خیال راحت آن را با کامنت کردن خطوط زیر در php.ini، غیر فعال کنید:
;zend_extension_manager.optimizer=/usr/lib/kloxophp/zend/lib/Optimizer-3.2.8
;zend_extension_manager.optimizer_ts=/usr/lib/kloxophp/zend/lib/Optimizer_TS-3.2.8
گام های زیر در سیستم عامل لینوکس نسخه CentOS کاملا تست شده و جواب داده است. دیگر نسخه ها نیز میتواند شبیه به همین باشد:
- ابتدا وارد SSH سرور می شویم.
- پیش ار نصب برنامه اصلی، باید برنامههای زیر در صورت نصب نبودن نصب شوند:
yum install gcc php-pear php-devel httpd-devel pcre-devel
- حال نوبت به نصب کش اصلی میرسد:
pecl install apc
- توجه: ممکن است با اشکال زیر مواجه شوید
ERROR: ‘phpize’ failed
برای رفع آن دستور زیر را اجرا می کنیم تا پوشه tmp سرور قابلیت اجرایی داشته باشد (منبع)
mount -o remount,exec /tmp
بعد از نصب کش، برای برگرداندن این تغییر، باید دستور زیر اجرا شود:
mount -o remount,noexec /tmp
- فایلی با نام apc.ini در پوشه احتمالا /etc/php.d سرور ساخته و آن را باز کنید و خط زیر را
extension=apc.so
وارد آن کنید.
- توجه: می توانستیم به جای این فایل از php.ini موجود در پوشه احتمالا /etc/ هم استفاده کنیم.
- در نهایت باید Apache سرور ریست شود تا کش قابل استفاده شود.
service httpd restart
یا
/etc/init.d/httpd restart
- حال برای اطمینان از موفقیت نصب کش کافی است دستور زیر را در php اجرا کنیم
phpinfo();
و بخشی با عنوان apc را در خروجی آن مانند شکل زیر بیابیم :
توضیحات تکمیلی :
برای دیدن آمار و حتی لیستی از فایلها و دادههای کش شده با جزئیات، فایل apc.php موجود در پوشه دانلود شده طی نصب APC را به پوشهای که توسط مرورگر بتوان دسترسی داشت کپی کرده و توسط مرورگر آن را اجرا کنید.
برای دیدن دادههای کش شده (User Cache Entries) باید رمز موجود در ابتدای فایل را به دلخواه تغییر داد مثلا:
defaults('ADMIN_PASSWORD','123');