
fgetcsvであるCSVファイルを読み込む簡単なスクリプトを書いています。
動作はさくらインターネットのスタンダードプランで行っていますが
fgetcsvの第二引数の一回に読み込むバイト数は
最大何バイトまで可能というか問題ないでしょうか。
今は200000(約195KB)でも動きに問題はないです。
でもこの先容量は増える見通しです。
しかしサーバーのメモリか何かに一時的に蓄える構造だと思うので
あまり大きな数字だと、さくらさんに負荷を与えてしまいそうで怖いです。
もちろん負荷がかかりそうなら、数回に容量を分けて処理することもできるのですが
一回でどのへんまで許容されるのかは知っておきたいです。
この辺はどう考えれば良いのでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>> fgetcsvの第二引数の一回に読み込むバイト数は
>> 最大何バイトまで可能というか問題ないでしょうか。
第2引数は、integerの最大値まで設定自体は可能ですので
処理系によって異なります。32bitOSを使っているのなら
約2G(ギガ)バイト程度でしょう。正確には、
echo PHP_INT_MAX;
を実行して御自身の処理系で調べてみてください。
但し、第2引数にどんな大きな値を設定しても1行ずつしか読み込みません。
1行に2Gバイトも有るcsvファイルは考えにくいのであまり意味は無いでしょう。
よって、メモリ使用量も第2パラメータでは無く 読み込むファイルの1行のサイズの
方に影響を大きく受けます。
メモリ使用量がご利用のホストでどこまで許されているかは、管理者の設定に依存するので
echo ini_get('memory_limit');
で確認してみては如何でしょう。その値までは管理者は利用を許可していることになります
また、メモリ使用量はfgetcsvだけでなくその前後のスクリプトにも依存しますので
fgetcsv部分にどこまで許容されるかは他の人には判定できません。
御自身の作成したスクリプトの最後に
echo memory_get_peak_usage();
を埋めばメモリをどの程度消費しているか確認できます
試しに 第二パラメータをいろいろ変えて (ちなみに、最大は0で無制限になります)
使用メモリの変化を確認し、memory_limit に対してどの程度余裕があるか確認しては
如何でしょうか。
初めまして
PHPはこのような事態にも便利な関数があるのですね。
memory_get_peak_usage();で値を変えながら様子を見ます。
多分この回答は他の方にも参考になると思います。
ありがとうございました。
No.1
- 回答日時:
fgetcsv関数は、CSVのデータの一行を読み込むための関数ですので、
CSVデータとしての改行が含まれるところまでを一旦読み込みます。
<?php
while($row = fgetcsv($fp)){
//一行ずつ読み込むので繰り返し処理をする
}
?>
195KBで指定した場合は、一行に、半角で20万文字が含まれていても読めますよ、という指定なんですが、
さすがに一行にはそんなに文字数はないですよね?
また、マニュアルに、
http://www.php.net/manual/ja/function.fgetcsv.php
PHP5以降では第二引数を省略すると、どんなに長くても一行分は取得してくるとあるので、若干遅くなる可能性がありますが
指定しなくても良いのかな、と思います。
この回答への補足
連絡有り難うございます。処理構造の関係でカンマ、カンマと区切っていって一行で結構な長さになるのですが、流石に20万文字はないです。
なのでとりあえず第二引数を省略して様子を見ます。
参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- Windows 10 Mcfeeの「抹消」を実行すれば、そのファイルが完全に消去された分 PCの空き容量は増えますか? 5 2023/05/06 14:40
- 発達障害・ダウン症・自閉症 中学の時にIQ82の境界知能と診断されました。 今の私も、やはり境界知能でしょうか? そしてこれは、 3 2023/02/19 00:37
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(AV機器・カメラ) GoPro動画をPC版Quikで再生できない 1 2022/05/14 21:04
- デスクトップパソコン ん~…分からん 7 2022/06/10 10:47
- ノートパソコン あなたのパソコン(Windows限定)は何年使っていますか? 4 2023/05/27 08:04
- ドライブ・ストレージ USBメモリ。信頼できるUSBメモリ容量は何ギガまで? 7 2022/04/14 07:31
- iPhone(アイフォーン) iPhoneアプリをホーム画面から除く、について アプリ削除ではなく、ホーム画面から除く場合、 iP 1 2023/03/30 21:25
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッファとは何ですか
-
MacからWinにファイルを添付す...
-
ページ読み込み時に自動的にsub...
-
EOF
-
VBA バイナリ―から文字列にす...
-
EXCEL VBAでテキストファイルの...
-
テキストデータをバイナリデー...
-
= (イコール)で始まるセルの値...
-
VBでRS232Cの制御について。
-
【MFC】CFileでSeekした位置か...
-
エラー:ストリームの終わりを...
-
ROM書き込みデータのファイル形...
-
fwriteでの書き込み
-
Excelファイルの軽量化の方法を...
-
EACのログファイルについて
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
-
Thunderbirdでemlファイルを開...
-
Access クエリ実行が急に非常に...
-
コンパイルするときに、ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
ページ読み込み時に自動的にsub...
-
EOF
-
エクセルVBA 2千万行のCSVファ...
-
入力ファイルをバイナリにする利点
-
【Teraterm】filewritelnについて
-
【python】Excelファイルを読み...
-
EXCEL VBAで、バイナリデータの...
-
FTPでエクセルをPUTするとファ...
-
テキストデータをSQLServerに取...
-
C言語とシリアル通信の送受信...
-
ビットマップファイル生成(C言...
-
pcxファイルを開きたい(RGBデ...
-
FTPを使わないファイルアップロ...
-
MacからWinにファイルを添付す...
-
HDDのバイナリイメージの取得方...
おすすめ情報