perlスクリプトをSpeedyCGIスクリプトとして動作させる場合、グローバル変数の値は保持され続ける。なので、一度接続したデータベースハンドルを使い回すことでデータベースへの接続コストを削減できる。
テスト用スクリプト .. continue reading ..
Trackback Uri
perlスクリプトをSpeedyCGIスクリプトとして動作させる場合、グローバル変数の値は保持され続ける。なので、一度接続したデータベースハンドルを使い回すことでデータベースへの接続コストを削減できる。
テスト用スクリプト .. continue reading ..
Trackback Uri
PERLでMySQLにデータを挿入する実験。
実験スクリプト
INSERT を100万回繰り返す。
for(1..1000000){ $sql = <<"EOM"; INSERT INTO `table_name` (`col1`,`col2`,`col3`,`col4`) VALUES ('10','11','12','13'); EOM $sth = $dbh->do($sql)|| die $dbh->errstr; }
結果:途中でサーバエラー
Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: xxxx.cgi
If you think this is a server error, please contact the webmaster.
Error 500
httpd/error_logの出力:
[Fri Feb 06 20:04:00 2009] [error] [client xx.xxx.xxx.xxx] Premature end of script headers: sql.cgi
挿入されたデータ:約83万行
httpd.confの設定が、TimeOut 60によるエラーか?
Trackback Uri
$sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth = $dbh->prepare( "$sql" ); $sth->execute(); $id = $sth->{mysql_insertid};
これで$idに「自分が追加した最新のauto_increment番号」が代入される
ただし下記のようにdoでは使えない。
$sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth = $dbh->do( "$sql" ); $id = $sth->{mysql_insertid};
Trackback Uri
最近のコメント