2010年3月15日月曜日

[PHP] 標準関数まとめ

PHP関数について、使用例をまとめていきます。

parse_url() — URL を解釈し、その構成要素を返す
$geturl = $_GET['url'];
$aParse = parse_url($geturl);

パース内容は以下の通り
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)

getenv() — 環境変数の値を取得する
$env = getenv('HTTP_REFERER');
$ip = getenv('REMOTE_ADDR');

※スーパーグローバル変数を使用する場合と等価
$ip = $_SERVER['REMOTE_ADDR'];

strpos() — 文字列が最初に現れる場所を見つける
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme); // 0

ereg_replace() — 正規表現にマッチした文字列を置き換える
$string_from = "original_string"; // 変更対象の文字列
$string_before = "~"; // 変更する箇所
$string_after = "~" // 変更する内容

$string_to = ereg_replace($string_before, $string_after, $string_from);

preg_replace() — はPerlの正規表現が使用できる。

配列内に要素があることを確認
in_array()

型チェック(整数値であるかを確認)
in_numeric()


以上です。


[MySQL] CSVやTSVファイルを対象としたデータ入出力方法

入力
文字の囲み文字が「"」のときの使用例。
囲み文字が必要ないときはENCLOSED BY '"'を外す。
[構文]
LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名
FIELDS TERMINATED BY ',区切り文字' ENCLOSED BY '"';

[使用例]
LOAD DATA INFILE "c:/data.csv" INTO TABLE data FIELDS TERMINATED BY ',' ENCLOSED BY '"';

TSVの場合
load data infile "c:/data.tsv" into table data fields terminated by '¥t';

出力
[構文]
SELECT * FROM テーブル名 INTO OUTFILE "ファイル名" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '囲み文字の指定';

使用例
select * from data into outfile "c:/out/data.tsv" fields terminated by '¥t';

以上です。

2010年3月14日日曜日

[Env] CentOSのセットアップ

MacのVMWare FusionにCentOSをインストールしました。

環境セットアップ情報を記録しておきます。

1.Apache&PHP
$ yum install -y php-mbstring

yumではインストールするパッケージに依存するパッケージもあわせてインストールされるため、php-mbstringを使用する際に必須となるApacheも自動的にインストールされる。






2.MySQL

$ yum -y install mysql-server // MySQLのサーバ
$ yum -y install mysql // MySQLのクライアント
$ yum -y install mysql-libs // MySQL関連のライブラリ
$ yum -y install mysql-devel // プログラムからMySQLへの接続に使用する







//状態を確認
$ service mysqld status
//起動
$ service mysqld start
//停止
$ service mysqld stop


以上です。

[Env] Sennaのインストール

とある案件でSennaを採用することになった。
Sennnaとは組み込み型全文検索エンジンです
Sennaプロジェクト

SennaをMySQLにバインディングするため、Tritonnをインストールする。
Tritonnプロジェクト

インストール環境
OS: CentOS release 5.4 (Final)[VM-Ware Fusion]


ビルドの大まかな流れ

1. MeCabをビルド
2. Sennaをビルド
3. Tritonnをビルド

Tritonnをビルドするためには、事前にSennaのライブラリ(libsenna)がビルドされている必要があります。またSennaをビルドするためには、MeCabのライブラリと辞書が事前にビルドされている必要があります(非MeCabなビルド方法は後述)。そこで上記のような手順でビルドを行います。


MeCabプロジェクト
gccをインストール
# yum install glibc glibc.i386
# yum install gcc*

y/Nでyを入力すること

g++をインストール
# yum install gcc-c++
少しイレギュラーなので注意

MeCabをビルド
# ./configure --prefix=/usr --with-charset=utf8
# make
# make install


# mecab-ipadic-2.7.0-XXXX
# ./configure --prefix=/usr --with-charset=utf8
# make
# make install

Sennaをビルド
# ./configure --prefix=/usr
# make
# make install


Tritonnをビルド
# ./configure --with-senna --with-mecab
error発生
configure: error: No curses/termcap library found
ライブラリが足りないらしい。下記コマンドでインストール。
# yum install ncurses-devel
# make
# sudo make install

ここも参考になる


最後の# make installが通らない。
y.tab.cがないとおこられる。

どうしたものか、調査中
(2010/3/14)

2010年3月10日水曜日

[PHP] キャッシュ手法まとめ

PHPでのキャッシュ手法をまとめる

1.中間コードキャッシュ
・APC
・eAccelerator
・XCache
・Zend Optimizer

APCが最も安定している
インストールコマンド
sudo aptitude install php-apc
sudo /etc/init.d/apache restart

管理画面apc.phpの導入
cd /usr/share/doc/php-apc/
sudo gzip -d apc.php.gz -c > /var/www/html/apc.php

GDのインストール
sudo aptitude install php5-gd
sudo /etc/init.d/apache restart

apache-benchコマンド
ab -n 500 -c 5 http://localhost/index.php
同時接続数5で500リクエストを送信


2.データキャッシュ
・ディスクキャッシュ
Cache_Liteの使用
インストール
sudo aptitude install php-pear
sudo pear install -Z Cache_Lite

・オンメモリキャッシュ

3.ページキャッシュ