Сен 30

Иногда бывает так, что у PHP по каким-то причинам нет доступа к интернету (NTLM-авторизация, блин(().
Тогда придётся ставить всё вручную.
В принципе, процесс установки описан на официальном сайте, но неправильно.
Действовать можно так:
1.Скачать последнюю стабильную версию PHPUnit (при написании заметки была скачана версия PHPUnit-3.4.0).
2. Разархивировать и скопировать содержимое папки PHPUnit-3.4.0 в папку путь-к-php\PEAR.
3. Изменить файл путь-к-php\PEAR\phpuint.bat:

Было

set PHPBIN="@php_bin@"
%PHPBIN% "@bin_dir@\phpunit" %*

Стало

set PHPBIN="путь-к-php\php"
%PHPBIN% ""путь-к-php\PEAR\phpunit.php" %*

Собственно, всё.

Теги:
Сен 24

оригинал; полная цитата:
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL.

Хочу представить вашему вниманию фичу MySQL — профайлинг.
Появилась она начиная с версии 5.0.37.

Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)
и почему она тормозит.

И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.

Итак, как пользоваться:

mysql> set profiling=1;
mysql> select count(*) from comment;
mysql> select count(*) from message;
mysql> show profiles;

+———-+————+——————————+
| Query_ID | Duration | Query |
+———-+————+——————————+
| 1 | 0.00012700 | select count(*) from comment |
| 2 | 0.00014200 | select count(*) from message |
+———-+————+——————————+
2 rows in set (0.00 sec)

Вуаля! Все выполненные запросы за сессию с временем выполнения.

На мой взгляд очень просто и сверх-удобно.

Можно пойти дальше, и узнать подробно на что тратилось время по каждому запросу:

mysql> show profile for query 1;
+——————————–+———-+
| Status | Duration |
+——————————–+———-+
| starting | 0.000015 |
| checking query cache for query | 0.000021 |
| checking permissions | 0.000003 |
| Opening tables | 0.000007 |
| System lock | 0.000004 |
| Table lock | 0.000023 |
| init | 0.000005 |
| optimizing | 0.000005 |
| executing | 0.000025 |
| end | 0.000003 |
| end | 0.000001 |
| query end | 0.000002 |
| storing result in query cache | 0.000003 |
| freeing items | 0.000003 |
| closing tables | 0.000004 |
| logging slow query | 0.000002 |
| cleaning up | 0.000001 |
+——————————–+———-+
17 rows in set (0.00 sec)

Подробнее о профайлинге в статье: Using the New MySQL Query Profiler

Upd: как точно подметил zayceslavshow profiles по умолчанию показывает профили для 15 запросов. Кол-во запрсов можно увеличить с помощью параметра profiling_history_size, но не более чем до 100.

mysql> set profiling=1;
mysql> set profiling_history_size=100;

Теги:
Авг 11

Случайно наткнулся на комментарий, что привело меня к инструменту MySQL Performance Tuning (ещё ссылка, tuning-primer – сам скрипт) для оптимизации mySQL путём советов по изменению конфига на основе логов.

Теги:
Июл 29

Честно пытался поставить всё сам в соответствии с официальной Wiki.
Почти получилось.
Но так и не смог забороть эксепшн

** exception exit: "I?eei?aiea ia auei caiouaii,
iineieueo iii iaei??aeoii iano?iaii.
Iiaoi?iay onoaiiaea i?eei?aiey ii?ao ?aoeou aaiio? i?iaeaio."
     in function  couch_util:start_driver/1
     in call from couch_server_sup:start_server/1

Пришлось воспользоваться ссылкой на бинарники CouchDB под Windows (полный «пак») и вроде заработало.
Но правда надо, чтоб был установлен Erlang (какие-то библиотеки видимо ставит).

После этого осаталось только запустить werl и набрать

couch_server:start().

Проверить работоспособность можно по ссылке.

Ссылки:
установка CouchDB под Windows
(англ.)
и ещё про установку CouchDB под Windows
(англ.)
в этом письме
есть
ссылка на бинарники CouchDB под Windows
(с эрлангом и всем прочим)

Теги:
Июл 24

подробный мануал на русском по установке и настройке

Теги:
Июл 24

http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml?part=2&chap=1

Теги:
Июл 24

документация (англ.)
Всё очень просто.

в php.ini добавить
[APC]
extension=apc.so #(.dll)
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 128
apc.max_file_size = 10m
#apc.stat = 0 для статистики
apc.stat_ctime = 1

*apc.stat_ctime=1 – очень важно при работе через «export» системы контроля версий (SVN).
Вот для чего:
SVN на самом деле создает новые файлы, заменяет старые, и выставляет для них старую дату изменения. Это меняет индексные дескрипторы, а не mtime, и APC будет выполнять некорректный файл.
Включение верификации ctime позволит избежать этой проблемы (будут проверяться индексные дескрипторы на предмет изменения).

apc_cache_info() – в php-файле посмотреть информацию по кешу
как установить APC в Windows (англ.) – проблема в том, что официально больше не поддерживается

неплохая статья на хабре про оптимизацию (2007 год)

Для справки:
Установка на Gentoo:
emerge pecl-apc
Проверка установки:
php -r ‘phpinfo();’ |grep apc

Для установки в Windows нужно скачать php_apc.dll.
Будет работать ссылка или нет – не знаю, поэтому выкладываю здесь файлы:
php_apc-3.0.19-5.2-Win32-VC6-x86
php_apc-3.0.19-5.2-Win32-nts-VC6-x86
php_apc-3.1-5.3-svn-20091026
php_apc-3.1-5-3-nts-svn-20091026

Теги:
Июл 24

Один нюанс использования NginX.
Если вместо статики на сайте с nginx выдаётся хедер 403 (Forbidden), то дело можно решить, изменив в nginx.conf строку
user <имя_пользователя>;
где <имя_пользователя> – имя пользователя, закачивавшего файлы.
Причём просто разрешение файлов на чтение и исполнение не поможет.

Теги:
preload preload preload