2009-02-26 18 views
0

mysqli_use_result()および同時実行

一つのクライアント側の処理の多くが行われた場合、これはサーバーが占有し、他のスレッドを防ぐことができますから、mysqli_use_result()を使用するべきではありませんデータがフェッチされているテーブルを更新することはできません。

これはmyISAMテーブルまたはInnoDBにのみ関係しますか?

答えて

1

だけにチェック:InnoDBがロックしないMyISAMロック、:

<?php 
     $db = new mysqli() or die ("Cannot connect: " . mysqli_connect_error() . "\n"); 
     $query = "SELECT * FROM mytable"; 
     $db->real_query($query) or die ("Cannot fetch: $db->error\n"); 
     $result = $db->use_result() or die ("Cannot use result: $db->error\n"); 
     while($row = $result->fetch_row()) { 
       print join("\t", $row) . "\n"; 
       usleep(1000000); 
     } 
?> 

このロック:

UPDATE mytable /* isam */ SET myvalue = 'test' WHERE id = 100 

これにはない:

UPDATE mytable /* innodb */ SET myvalue = 'test' WHERE id = 100 
関連する問題