2008年11月23日日曜日

pecl-memcacheも更新

php5をアップグレードしたら、phpのエクステンション pecl-memcacheのエラーがでるようになったので、リビルドする。

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20060613/memcache.so' - /usr/local/lib/php/20060613/memcache.so: Undefined symbol "php_session_create_id" in Unknown on line 0

再構築方法
sudo portupgrade -rf /var/db/pkg/pecl-memcache-2.2.4
---> Reinstalling 'pecl-memcache-2.2.4' (databases/pecl-memcache)
---> Building '/usr/ports/databases/pecl-memcache'
===> Cleaning for pecl-memcache-2.2.4

2008年11月22日土曜日

php5-5.2.6_2へバージョンアップ

PHPとPHPエクステンションのバージョンアップを行いました。

バージョンアップ方法

  • まずportsを更新します。
  • sudo portsnap fetch update
  • PHPと関連パッケージをアップグレードします。
  • sudo portupgrade -r /var/db/pkg/php5-5.2.6/

'php5-5.2.6' から 'php5-5.2.6_2'にあがりました。

2008年11月11日火曜日

Perlモジュール p5-IP-Countryをインストール

Perlモジュール p5-IP-Country のインストール

IPアドレスの国を調べることが可能です。

インストール
cd /usr/ports/net/p5-IP-Country
sudo make install clean

モジュールのサイト
http://search.cpan.org/dist/IP-Country/

2008年11月6日木曜日

PHP memcachedを使うサンプルコード

PHPからmemcachedにアクセスするサンプルコード

サンプルでは下記のテストをします。
memcachedに接続(connect)
値(keyとvalue)をmemcachedにセット(add)
getでkeyのvalue(値)を取得して、dump



<?php
$memcache 
memcache_connect('localhost'11211);

if (
$memcache) {
    
$memcache->set("str_key""String to store in memcached");
    
$memcache->set("num_key"123);

    
$object = new StdClass;
    
$object->attribute 'test';
    
$memcache->set("obj_key"$object);

    
$array = Array('assoc'=>123345567);
    
$memcache->set("arr_key"$array);

    
var_dump($memcache->get('str_key'));
    
var_dump($memcache->get('num_key'));
    
var_dump($memcache->get('obj_key'));
}
else {
    echo 
"Connection to memcached failed";
}
?>


FreeBSD ports pecl-memcacheをインストールする

PHPからmemcachedにアクセスするためには、PHPエクステンション pecl-memcacheが必要です。

pecl-memcacheのインストール方法

cd /usr/ports/databases/pecl-memcache
sudo make install clean


pecl-memcacheをインストールしたら、apacheを再起動して反映します。
sudo apachectl restart


PHPに組み込まれたか確認してみます。
% php -m |fgrep memcache
memcache

memcacheのエクステンションが読み込まれていることが確認できました。


PHPに組み込まれたmemcacheの関数を確認してみます。
% php -r 'var_dump(get_defined_functions());' |fgrep memcache
string(16) "memcache_connect"
string(17) "memcache_pconnect"
string(19) "memcache_add_server"
string(26) "memcache_set_server_params"
string(26) "memcache_get_server_status"
string(20) "memcache_get_version"
string(12) "memcache_add"
string(12) "memcache_set"
string(16) "memcache_replace"
string(12) "memcache_get"
string(15) "memcache_delete"
string(14) "memcache_debug"
string(18) "memcache_get_stats"
string(27) "memcache_get_extended_stats"
string(31) "memcache_set_compress_threshold"
string(18) "memcache_increment"
string(18) "memcache_decrement"
string(14) "memcache_close"
string(14) "memcache_flush"

FreeBSD ports memcachedをインストールする

メモリでデータをキャッシュするハッシュデータベース memcached をFreeBSDにインストールします。

portsからインストールします。

cd /usr/ports/databases/memcached
sudo make install clean

インストールはこれで完了です。

REPCACHEDは、オプションで選択することが可能です。
[X] REPCACHED Enable data replication feature

memcachedにレプリケーション機能が追加実装されたのが、repcachedです。

起動スクリプト
/usr/local/etc/rc.d/memcached


memcachedのバイナリ
/usr/local/bin/memcached-debug
/usr/local/bin/memcached


設定
rc.conf
memcached_enable="YES"
とすることで、FreeBSD起動時にmemcachedを起動することができます。

手動で起動
sudo /usr/local/etc/rc.d/memcached start

再起動・停止
sudo /usr/local/etc/rc.d/memcached restart
sudo /usr/local/etc/rc.d/memcached stop