CentOS ODBC接続方法
============================================================ CentOS ODBC接続方法 ============================================================ サーバ(192.168.1.1) PostgreSQL クライアント(192.168.1.2) ODBCで、USER hogeにて接続
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
PHPのコードをcppで記述する方法
[参考]
http://phpspot.org/blog/archives/2006/05/phpc.html
[環境]
Fedora Core release 6 (Zod)
php-5.1.6-3.4.fc6
[事前準備]
http://sourceforge.net/projects/binaryphp/
ソースのダウンロード
$ tar xfvz BinaryPHP-POC.tar.gz
$ cd BinaryPHP-POC
$ vi BinaryPHP-POC/tokenflow.php
19行目が二重に定義されている為コメントアウト
// var $defines = array();
$ less examples/helloworld.php
$ php convert.php --if examples/helloworld.php --of examples/helloworld
$ less examples/irc.php
$ php convert.php --if examples/irc.php --of examples/irc
sambaが極端に遅くなった件 => ldapのパラメータを変更することで対応
# strace -r -o strace.log getent group
> 0.000120 getpeername(4, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
> (省略)
> 3.104881 read(4, "0\f\2\1\1a\7\n", 8) = 8 <= 3秒かかっている
[memoryサイズを増加させることで対応]
# vi /etc/openldap/slapd.conf
sizelimit 2000
cachesize 2000
dbcachesize 5000000
getentが遅い件 => nameserverへのアクセスが遅い為
getentが遅い件 => nameserverへのアクセスが遅い為
# strace -r -o strace.log getent group
0.000088 connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.16.250.3")}, 28) = 0 ※nameserverにアクセス
0.000138 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
0.000078 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
0.000080 gettimeofday({1176982087, 259651}, NULL) = 0
0.000086 poll([{fd=4, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1
0.000093 sendto(4, "\315d\1\0\0\1\0\0\0\0\0\0\ngfile-test\0033si\2co\2j"..., 38, MSG_NOSIGNAL, NULL, 0) = 38
0.000114 poll([{fd=4, events=POLLIN}], 1, 5000) = 0
4.996302 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5 ※ここでひっかかる
0.000082 connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("172.16.250.4")}, 28) = 0
- -
# less /etc/resolv.conf
- -
(変更前)
nameserver 172.16.250.3
nameserver 172.16.250.4(変更後)
#nameserver 172.16.250.3
#nameserver 172.16.250.4
上記のようにコメントアウトしたら、早くなった
■
magic_quotes_gpcを強制的に外す | この先生きのこるにはより
よくよく見たら、array_mapの有意義な使い方が書かれていた。
配列から値になるまで再帰的に呼び出し、
値になったらstripslashesで値を変更。
この使いかたは常識なんだろうけど、知らなかった。ううう。恥。
でも、いろいろと他にも利用できそうだ。
$data = "hoge\\fuga\'hogege";
$data[1] = "hoge\\fuga\'hogege";
$data[1][] = "hoge\\fuga\'hogege";
var_dump($data);
var_dump(stripslashes_deep($data));
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}