[PHP-users 28933] CSVファイルが大きすぎて読み込めない
高木 孟旭
asahi10 @ hotmail.com
2006年 4月 5日 (水) 16:57:01 JST
あさひといいます。初めて利用します。
今までもいくつかのエラーを解決しましたが、今回ばかりは考えても分からないので
助けてください。
初歩的な部分なのかもしれません、教えてください!よろしくおねがいします。
CSVファイルを自作関数を利用して変数に代入して表示させてます。
common.phpを作成し、その中にLoadCsvFile関数を購入した参考書から引用して利用
してます。
LoadCsvFile関数の内容としてはCSVファイルを一行ずつ読みとり、カンマで分け2次
元配列に格納します。
CSVのデータとしては一行に30くらいのフィールド(カンマ区切り)があり、それが
2500行くらいあります。
しかし、データ数がそこまでが限界らしくファイルとしては600KBくらいなのです
が、
コピーして3000行くらいにしたら、それまで表示されていたsearch.phpが
「サーバーが見つかりません・ページが表示できません」というエラーが出てきて表
示できなくなってしまいました
データ量が多くなると表示されなくなります。仮にsearch.phpの
$midokoroDATA = LoadCsvFile("./data/midokoroDATA.csv");
を切り取ると今度はキチンと表示されます。
これはデータ数が多いのが原因なのでしょうか?なにがわるいのか全く分かりませ
ん。
CSVの関数は購入した本からもってきたプログラムなのでエラーの原因がよけい分か
りません。
$midokoroDATA に代入することが出来ない大きさになってしまったからでしょうか?
どのようにしたら何万件ものCSVでも表示できるようになるでしょうか?
どなたか教えてください。お願いします
common.phpの関数部分
########################################
function LoadCsvFile( $FilePath, $encoding = "EUC_JP",$s_encoding = "SJIS"
) {
if ( file_exists( $FilePath ) == false ) {
return false;
}
$CsvData = array();
$TextData = file( $FilePath );
for ( $i = 0; $i < sizeof( $TextData ); $i++ ) {
$TextData[ $i ] = ereg_replace( "\n$", "", $TextData[ $i ] );
$TextData[ $i ] = ereg_replace( "\r$", "", $TextData[ $i ] );
$CsvData[ $i ] = split( ",", $TextData[ $i ] );
}
return $CsvData;
}
#########################################
上記の関数を利用し、メインのページでみどころのCSVデータ(2次元配列)を変数に
代入します。
search.php
#########################################
(一番上)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?php //基本データのロード
require_once( "common.php" );
$midokoroDATA = LoadCsvFile("./data/midokoroDATA.csv");
?>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(ロードしてフィールド1を表示する部分)
for ( $x = 0; $x < sizeof( $midokoroDATA ) ; $x++ )
{
echo($midokoroDATA[$x][1]);
}
#########################################
PHP-users メーリングリストの案内