データベースをループして100行しか処理しない場合は、RAMを使い果たしてしまいます。複数のSQLクエリーをループする?
しかし私の問題は、私のスクリプトが開始と終了の制限を増やさない理由はわかりません。ですから、私は1回のリターンしか得られず、開始と終了のリミットを+100ずつ増やしてデータベースをループさせません。
私の失敗は誰にも見えますか?
$count_values = mysqli_num_rows($values_gk);
$count_values = intval($count_values);
$myfile = fopen("httpdocs/wp_all_import.txt", "a");
if($values_gk === FALSE){
fwrite($myfile, "SQL Error\n");
}
$start = -100;
$end = 0;
do{
$start = $start + 100;
$end = $end + 100;
if($end > $count_values){
$end = $count_values;
}
$values_gkw = $database_gk->query("SELECT `ID` FROM `fWR6qIN_posts` where post_type = 'product' AND post_status = 'publish' limit $start, $end");
fwrite($myfile, "Entered 1. While Loop\n");
while($row = $values_gkw->fetch_assoc()){
if($row["ID"] != null){
//do something with the values
//code removed to reduce the text here
}
}
fwrite($myfile, "\n+++ Start: " .$start. " Limit: " .$end. " +++\n\n");
} while ($end <= $count_values);
カウント値:(すべての行の量を取得するために無制限に確認してください)
$values_gk = $database_gk->query("SELECT `ID` FROM `fWR6qIN_posts` where post_type = 'product' AND post_status = 'publish'");
$count_values = mysqli_num_rows($values_gk);
$count_values = intval($count_values);
挨拶とありがとうございました!
「100行しか処理しないと、RAMが使い果たされる」 。 。もっと教えてください。これは1980年ではありません。 –
このコードは問題ありません。どの値に '$ count_values'が格納されていますか? –
'$ end> $ count_value'の場合に問題が発生します。次に、 '$ end'を' $ count_value'に設定します。しかし、あなたのdo-whileループは '$ end <= $ count_values'の間にループします。あなたがそれらを等しく設定してから本当です。 **無限ループ**が発生します。 – kaldoran