Ps »тюнінг php

Блог - Linux, програмування, Я!

Кожен раз, коли ви відкриваєте сторінку динамічного веб-додатки, веб-сервер звертається до PHP, який завантажує запитаний .php файл і все include і require, потім парсит їх, компілює в проміжний байт-код (opcode) і виконує. Причому у великих проектах процес включення всіх include файлів може займати досить тривалий час.
Тому були розроблені численні PHP-Кешер. Найбільш популярні з них - APC (Alternative PHP Cache), XCache і eAcelerator. Всі вони дозволяють зберігати і повторно використовувати скомпільований байт-код PHP, що дозволяє економити час на складання всіх включень і їх компіляцію, економить процесорний час і оперативну пам'ять (причому досить значно). Крім цього, вони дозволяють зберігати в кеші змінні PHP і звертатися до них при наступному виклику скрипта. Який з цих Кешер використовувати - не особливо принципово, по продуктивності вони не сильно відрізняються. Я вибрав XCache тому на нього ніхто не лається як на eAcelerator і я вже працював з APC і було цікаво спробувати щось нове

Так ось, приступимо. Установка XCache досить проста, але тим не менше:

Встановлюємо пакет php5-xcache:

[Codesyntax lang = "bash"] sudo apt-get install php5-xcache [/ codesyntax]

Редагуємо конфиг розширення PHP xcache.ini

[Codesyntax lang = "bash"] sudo nano /etc/php5/conf.d/xcache.ini[/codesyntax]

Там виправляємо рядки:

розмір opcode кеша. Ставте близько 64Мб. Взагалі, якщо у вас на сайті багато різних PHP скриптів з великою кількістю різних include, то потрібно ставити значення побільше. Якщо сайт всього один - можна залишити маленьке значення.
xcache.size = 64M

розмір кеша даних / змінних. Якщо в якості Кешер даних використовуєте саме xCache, то ставте побільше. Якщо використовуєте Memcached, то встановіть 0
xcache.var_size = 32M

вказуємо кількість процесорів (або ядер) на вашому комп'ютері
xcache.count = 2

Переконайтеся, що є рядок
xcache.cacher = On

Зберігаємо, перезапускаємо веб-сервер / php

[Codesyntax lang = "bash"] sudo /etc/init.d/apache2 restart [/ codesyntax]

Ps »тюнінг php

P.S .: після установки Кешер відвалився Zend Debuger з повідомленням "Debugger compile handler overriden, can not continue". Звичайно дивно ставити Кешер і дебагер на одну тачку, але все-ж. Щоб це пофиксить рекомендують

[Codesyntax lang = "bash"] sudo nano /etc/php5/conf.d/zend_debugger.ini[/codesyntax]

The zend_debugger.expose_remotely directive determines whether the debugger will expose itself (i.e. signal its presence) to remote clients. This is required if you want the Zend Studio Browser Toolbar to automatically detect pages that can be debugged. Select 'always', 'never', or 'allowed_hosts' (this only exposes the hosts in the allowed host list)

Тобто вказує в яких випадках Zend Debuger повинен видавати свою присутність (за допомогою спеціального HTTP заголовка) .Таким чином, ця опція стає в положення 'always', але зате хоча б буде працювати. Тим не менш, це явно баг а не фіча!

Зробив xcache.size = 64M і xcache.var_size = 32M сайт йде в «502 Bad Gateway». Встановлено Nginx може бути через це?
Якщо міняю значення xcache.size і xcache.var_size на інші то сайт працює але команда php -v видає крім стандартного виводу:

php -v
/ Dev / zero: No space left on device
Failed creating file mappping
PHP Fatal error: Failed creating file mappping in Unknown on line 0
PHP Fatal error: XCache: Can not create shm in Unknown on line 0

Загалом зробив поки xcache.size = 16M і xcache.var_size = 16M, так помилок не з'являється. Але все-таки цікаво як це можна виправити?

/ Dev / zero: No space left on device

Можливо у вас відсутній пристрій / dev / zero

Можна спробувати замінити xcache.mmap_path = "/ dev / zero" наприклад на xcache.mmap_path = "/ tmp / xcache"

Ну і xcache.var_size є сенс ставити більше 0 тільки якщо використовуєш функції на кшталт xcache_set () xcache_get ()

У мене немає пристрою такого, коли ставлю в / tmp / zero то як тільки файл досягає певного розміру (xcache.size + xcache.var_size) то сайт видає 500. Причому не важливо якими будуть xcache.size і xcache.var_size, хоч по 1M все одно.

Зокрема рекомендують збільшити значення параметра ядра kernel.shmall
подивитися поточне значення можна
sysctl -A | grep kernel.shm

Добрий час доби. не можу зрозуміти в чому проблема. Все встановив, созад хост для хкеш і запустив веб інтерфейс видає дуже багато помилок ось такого роду:

Undefined index: avail in /www/xcache.local/www/admin/xcache.tpl.php on line 58
... ..

Спробував поритися пхп коді, нічого не можу збагнути. Може десь потрібно вказати додатковий шлях? Заздалегідь дякую

Схожі статті