Установка php-handlersocket 0.0.7 на ubuntu (новые грабли)
Со времени прошлого поста прошло много времени, расширение php-handlersocket успело обновитсья с 0.5 до 0.7, автор исправил некоторые баги. Спасибо вам, за то что находили их и постили в Issues. Сегодня обновили Ubuntu на компе разработчика с 10.04 до 10.10 и старая метода установки HandlerSocket работать перестала. Но нам всё-таки удалось его установить! Баг актуален только в случае обновления Ubuntu c 10.04 на 10.10 На чистой ОС таких проблем нет.
Проблема
При коннфигурировании (./configure) расширения php-handlersocket вылетают ошибки вида:
1 2 |
"error: Please reinstall the hsclient distribution" "configure: error: wrong hsclient lib version or lib not found" |
а при компиляции(make) такие:
1 2 3 4 5 |
"checking for mysql_config... no checking mysql binary... configure: error: mysql_config not found! You have to specify the directory where mysql_config resides to --with-mysql-bindir=PATH." "checking if --enable-mysql-debug is specified... no checking mysql source... configure: error: --with-mysql-source=PATH is required for standalone build" |
Суть проблемы
Для компиляции расширения необходим скомпилированный плагин handlersocket для mysql. А для компиляции плагина необходимы исходники mysql.
Решение
0. Подготавливаем систему
1 |
sudo apt-get install libmysqlclient-dev |
1. Смотрим какая версия mysql стоит в системе.
1 2 |
$ mysql -u root -p Server version: 5.1.52-rel12.3 (Percona Server (GPL), 12.3 , Revision 159) |
У нас стоит Percona Server.
2. Идём на их сайт и качаем исходники:
http://www.percona.com/redir/downloads/Percona-Server-5.1/Percona-Server-5.1.52-12.3/source/Percona-Server-5.1.52-12.3.tar.gz
3. Распаковываем папку Percona-Server из архива в папку /usr/local/src/percona
4. Скачиваем плагин handlersocket отсюда:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/archives/master
Распаковываем его в папку /home/user/1/hs
5. Конфигурируем плагин вместе с исходниками mysql и компилим
1 2 3 |
andrey@vaio:/home/user/1/hs# ./autogen.sh andrey@vaio:/home/user/1/hs# ./configure --with-mysql-source=/usr/local/src/percona andrey@vaio:/home/user/1/hs# make |
Если вылезает ошибка:
1 |
checking mysql binary... configure: error: mysql_config not found! You have to specify the directory where mysql_config resides to --with-mysql-bindir=PATH. |
значит вы не поставили sudo apt-get install libmysqlclient-dev
6. Скачиваем расширение php-handlersocket(http://code.google.com/p/php-handlersocket/downloads/list),
если ещё не скачали, и распаковываем их в папку (/usr/local/HandlerSocket-Plugin/).
7. Конфигурируем php-расширение вместе с плагином handlersocket и компилим:
1 2 |
./configure --with-handlersocket-includedir=/usr/local/HandlerSocket-Plugin/libhsclient make |
Должно вывести:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
---------------------------------------------------------------------- Libraries have been installed in: /home/user/1/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'. |
и ставим:
1 2 3 4 |
# make install Installing shared extensions: /usr/lib/php5/20090626+lfs/ Installing header files: /usr/include/php5/ |
8. Создаем файл /etc/php5/conf.d/handlersocket.ini в котором пишем
1 |
extension=handlersocket.so |
9. Перезагружаем php
sudo service apache2 restart (для php, установленного, как модуль Apache)
sudo service php5-fpm restart (для php-fpm)
10. Смотрим phpinfo(); и там должен появиться раздел про HandlerSocket
Ура! Теперь мы можем работать с HS!
Помогите пожалуйста!
Сдела все как говориться тут. Все скомпилил. Согдал таблицы как в примере и запустил php скрипт.
Вот получил такой ответ
Connected to HandlerSocket
Can not open index
-1:connect: 111
Народ подскажите что нетак?!
Это я не так скомпилил или это вообще в базе проблема или в чем?!
Сергей, какая у вас структура таблицы и данные и какой запрос к HandlerSocket?
И еще.
У меня после установки percona server кол-во используемой памяти резко возрасло в разы – так и должно быть?!
А это уже надо конфиг перконы смотреть.
Конфиг перконы – my.cnf или что-то другое?!
my.cnf
$hs = new HandlerSocket(‘127.0.0.1’, 9998);
if($hs) {
print ‘Connected to HandlerSocket’;
} else {
print ‘Can not connect’;
die();
}
//index
$index = $hs->openIndex(
1,
‘mysql’,
‘user’,
HandlerSocket::PRIMARY,
‘Host,User,Password’
);
Сергей, Вы разобрались с этой ошибкой? У меня такая же.
This is awesum!