PHPでMySQLテーブルロック一覧取得
PHPでMySQLテーブルロックされている一覧を取得したいですがどのようにすれば良いかご教授願います。
Web検索で調べるとロック状態はmysql_list_processesや、show processlistでも試してみましたが、思うような結果は得られませんでした。正常には動作していますが、欲しいデータが取り出せないですす。。。
単純に、現在ロックしているテーブル名(レコードロックは不要です。)を一覧で出力させることはできないのでしょうか?
PHPから実施できるやり方をご教授頂けると幸いです。
-------Test Program()---------
<?php
$link = mysql_connect('localhost', 'login_id', 'login_pass');
mysql_select_db('db_name');
mysql_query('LOCK TABLES table1 WRITE');
mysql_query('INSERT INTO table1 SET field1 = "test", field2 = "1"');
//$result = mysql_list_processes($link); 以下のSQL文とも入れ替えて試しました。
$result = mysql_query('show processlist');
while ($row = mysql_fetch_assoc($result)){
printf("%s %s %s %s %s %s %s %s\n", $row["Id"], $row["User"], $row["Host"], $row["db"],
$row["Command"], $row["Time"] , $row["State"], $row["Info"]);
}
mysql_free_result($result);
mysql_query('UNLOCK TABLES');
?>
お礼
ありがとうございます。 できました。非常に助かりました。感謝します。 参考までにPHP文も書いておきます。 <? //SQL接続は省略 $sql = "show table status from DB名 like 'テーブル名'"; $rs = mysql_query($sql); $row = mysql_fetch_array($rs); echo $row[Data_length] .'バイト'; ?>