PHPのmysqli-> query()とfetch_row/fetch_assocをループで使用すると、PHPはデータを最初にキャッシュし、結果を全体として返します(したがって、その間に行が更新されると、fetch_row古いデータを返しますか?それともリアルタイムデータを返しますか?PHP mysqli queryとfetch_(row/assoc)はリアルタイムデータを使用していますか?
PHPのキャッシュを使用するかどうかを制御できるように、この動作を設定できる場所はありますか(データベースタイプの設定、PHPの設定...など) 。
ファイル1:
願望などのデータやリアルタイムデータはたとえば、私たちは同じDBテーブル「ユーザー」を変更する2つのプロセスを持っています
<?php
$res=$mysqli->query("SELECT * FROM users WHERE id > 0 and id < 100 ORDER BY id ASC");
while($r=$res->fetch_assoc()){
...do something that takes 10 mins each loop...
print_r($r['active']);
}
はファイル2:
$mysqli->query("UPDATE users SET `active` = 'TRUE' where id = 90");
レッツは、最初はすべてのユーザーがFALSEにactive
セットを持っていると言います。 ファイル1を1つの端末で実行し、その直後に別の端末でファイル2を実行します。
ファイル1がユーザー "90"を処理するとき、 "TRUE"または "FALSE"が出力されますか?
ありがとうございます。
これはPHPについてではなく、データベースに関するものです。通常の種類のリレーショナルデータベースはクエリを実行し、一貫性のある結果を一度に返します。結果を読むことは重要ではありませんが、それらはただそこにあります。クエリの実行中または結果の変更後に行う操作はありません。他の種類のデータベースでも同じことは当てはまりません。 –