February 2008
February 29, 2008
mysql export as csv
セル内の改行コードと行区切りのための改行コードのアレがうまくいかず、とりあえずstr_replace()で対処することに。
改行コードはとりあえずwindowsに合わせ'\r\n'に。
SQLでエクスポート
改行コードはとりあえずwindowsに合わせ'\r\n'に。
SQLでエクスポート
SELECT * FROM tblname INTO OUTFILE '/path/to/output.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n';なんかおかしいセル内改行コード置換
$contents = file_get_contents("/path/to/output.csv");
$replaced = str_replace("\\\r\n", "\r\n", $contents);
February 28, 2008
pgpool - connection pooling
$ tar zxvf pgpool-3.4.1.tar.gz $ cd pgpool-3.4.1 $ ./configure \ --prefix=/usr/local/pgpool \ --with-pgsql=/usr/local/pgsql $ make && make install $ cd /usr/local/pgpool/etc $ cp pgpool.conf.sample pgpool.conf $ vi pgpool.conf listen_address = '192.168.0.50' port = 5433 backend_port = 5432 enable_pool_hba = true num_init_children = 10 max_pool = 20 $ cp pool_hba.conf.sample pool_hba.conf $ vi pool_hba.conf host all all 192.168.0.0/24 trust
$ ../bin/pgpool -n &
--- Benchmark ---
$ ab -n 500 -c 100 -k http://www.example.com/testapp[ PostgreSQL-8.3.0 ]
Requests per second: 127.55 [#/sec] Time per request: 7.840 [ms][ PostgreSQL-8.3.0 (connection pooling) ]
Requests per second: 181.14 [#/sec] Time per request: 5.521 [ms][ MySQL-5.0.41 ]
Requests per second: 186.16 [#/sec] Time per request: 5.372 [ms]
February 26, 2008
in_array
in_array()には第3引数にtrueを渡すこと。
$a = array("0");
var_dump(in_array(false, $a)); // true
$a = array("0");
var_dump(in_array(false, $a, true)); // false
$a = array(true);
$o = new stdClass();
var_dump(in_array($o, $a)); // true
$a = array(true);
$o = new stdClass();
var_dump(in_array($o, $a, true)); // false
February 23, 2008
__destruct
__destructは複数回コールされることがある。
1回しか実行されたくない場合はチェックが必要。
1回しか実行されたくない場合はチェックが必要。
public function __destruct()
{
static $flag = false;
if ($flag) return;
// process
$flag = true;
}
リクエスト終了時に(1回だけ)実行したいということならシングルトンにしてregister_shutdown_function()を使うのが良いのかも。
class Singleton
{
private static $instance = null;
private function __construct() {}
public static function getInstance()
{
if (self::$instance === null) {
self::$instance = new self();
register_shutdown_function(array(self::$instance, "shutdown"));
}
return self::$instance;
}
public function shutdown()
{
}
}