[PHP-users 23895] connection_status の使い方
mami
mm_tig @ yahoo.co.jp
2004年 12月 12日 (日) 19:28:27 JST
田中です。
プログラムが正常に行われたら COMMIT し、タイムアウトなどで正
常に行われなかったら COMMIT しないというサンプルプログラムを
作ってみたのですが思い通りに動いてくれません。connection_status()
の使い方がよく分かっていないためどこか間違っているんだと思い
ます。
connection_status() の返り値は
http://jp.php.net/manual/ja/features.connection-handling.php に
0 - NORMAL
1 - ABORTED
2 - TIMEOUT
と書いているのですがタイムアウト時に 2 が返ってきていません。
0 が返ってきています。なので COMMIT されてしまいます。
ちなみに register_shutdown_function() を使わず プログラムの
一番下に COMMIT を書けば解決だとは思いますがどうしても
register_shutdown_function() は使いたいので宜しくお願いしま
す。
<?
set_time_limit(1);
register_shutdown_function("endFunc");
$conn = pg_connect("dbname=test user=postgres");
pg_query($conn, "BEGIN");
for($i=0; $i<100000000; $i++){
pg_query($conn, "INSERT INTO test_tab (name_txt) VALUES('')");
}
function endFunc(){
global $conn;
if(!connection_status()){
pg_query($conn, "COMMIT");
}
}
?>
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.296 / Virus Database: 265.5.0 - Release Date: 2004/12/09
__________________________________
STOP HIV/AIDS.
Yahoo! JAPAN Redribbon Campaign
http://pr.mail.yahoo.co.jp/redribbon/
PHP-users メーリングリストの案内