コハナは別として、私はそれを使ったことがないので、あなたが現在していることは基本的にこれです:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
つまりmysql_fetch_assoc
を使用してMySQLからすべてのデータを取得しています そして、それらをすべて$data
にプッシュして、PHPのメモリに保存します。 。つまり、PHPには、すべてのデータを一度に保存するのに十分なメモリが必要ですが、そうではありません。
あなたがしたいのは、MySQLから1つの結果行をフェッチし、それを使って何かをしてから、すべてを一度にメモリに保存せずに次の行に移動することです。
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
いいえ、非推奨のmysql_APIは使用しないでください。これはここでの最大公約数の例にすぎません。また、一度に190,000行をフェッチして出力するよりも、やりたいことを実行するためのより良い方法が必要です。