• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのfgetcsvの処理容量について)

PHPのfgetcsvの処理容量について

mpxの回答

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答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 に対してどの程度余裕があるか確認しては 如何でしょうか。

reimy1
質問者

お礼

初めまして PHPはこのような事態にも便利な関数があるのですね。 memory_get_peak_usage();で値を変えながら様子を見ます。 多分この回答は他の方にも参考になると思います。 ありがとうございました。

関連するQ&A

  • PHPが動きません。

    http://pbs.darkgray.net/ の中にある「Lreverse」PHPスクリプトについて教えてください。 さくらインターネット(スタンダード)とロリポップで動きません。 同じものがCsideネットでは問題なく動くのですが… またこのPHPの作者はさくらインターネットのようです。 何か設定を変えたら動くのでしょうか? パーミッションは元々そのままでと書いてありますが、いろいろといじってみても動きませんでした。 FAQにあるように、文字コードも変換してみたのですが、うまく行きません。 どうぞよろしくお願いいたします。

  • ホームページ上に公開するPDFの容量について

     ホームページ上(公的)に公開するPDF文書の重さについて、どの程度までが許容されると思われるか教えてください。  一般に通常のページは100KB~せいぜい200KB以内程度が適切な限界かと思いますが、PDFの場合、どの程度でしょうか?  またアクロバットスタンダードで、ワード文書(写真入)をPDF化するとき、容量を小さくするにはどうすれば、よいでしょうか?  よろしくお願い申し上げます。

  • マナーとしての添付ファイルの容量

    大学生の女です。メールのマナーについて質問させてください。 4月に入社する予定の会社から、レポート課題が出されました。 Wordなどで作成し、メールに添付して提出するように言われました。 分量について特に指示はありませんでしたが、画像を載せたりしているうちに容量が思いのほか大きくなってしまいました。 プロパティで見ると、サイズは1.00MB(1,050,112バイト)、ディスク上のサイズは776 KB (794,624 バイト)となっています。 そこでネットで調べた方法(保存するときに「ツール」→「図の圧縮」をして保存)を試してみたところ、サイズは781 KB (799,744 バイト)、ディスク上のサイズは532 KB (544,768 バイト)まで抑えられました。 メールに添付するファイルの容量は、どの程度までなら許容範囲でしょうか?上記の圧縮前、圧縮後の容量は送っても失礼にはならない程度のものでしょうか?

  • JS(ajax)でphp(csv)の読み込み

    こんにちは。 Javascriptのご教授お願いしたく、書き込みました。 今JavascriptでAjaxを使って、CSVを読み込むPHPを実行しています。 PHPでは、CSVを読み込み(readcsv.php)、その結果を別のファイル(alert.html)に受け渡しています。 問題が、読み込んでいるJavascript側でもデータを一つ一つ取得したいですが、 方法が分かりません。ご教授お願いします。 構成 : alert.html(Javascript), readcsv.php, test.csv コード構成 : -------------------------------------------------------------------------- alert.html <script type="text/javascript"> $.ajax({ type: "POST", url: "readcsv.php", success: function(printString) { alert(printString); --> ここをどうするべきか悩んでいます。 }, error:function(){ alert("error"); } } ); </script> ------------------------------------------------------------------------------- readcsv.php <?php $filename = "test.csv"; $row = 1; $rowS = 1; if (($handle = fopen($filename, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, "*")) !== FALSE) { $num = count($data); $row++; for ($c=0; $c < $num; $c++) { $String = explode(",", $data[$c]); foreach ($String as $AllString) { echo $AllString."\n"; } echo "\n"; } } fclose($handle); } ?> ---------------------------------------------------------------------------- test.csv 1,2,3,4,6,8*9,1,2,3,5,7,2,1,3,5*7,2,1,2,3,5,7,2*1,5,3 ---> 数字の羅列(コンマ区切り) ---------------------------------------------------------------------------- です。 一番問題になっているところは、 alert.html の alertのところで、 readcsv.php から受け取った値を一つ一つ変数に格納したいところです。 ご教授お願いします。

  • Wordで内容変更後別名保存すると容量が増える

    Word2000で会議の議事録を作成していますが、形式が同様なので前回議事録を内容変更後別名保存しています。 第1回が30KBだったのが回が進むにつれ容量が増え第30回の議事録が180KBになってしまいました。 ページ数はどれも4ページ程度で文章内容も容量的にそれほど変わると思えません。 メール等での貼付等問題になってきています。 どなたか原因が分かれば教えていただきたいのですが。

  • BBSとサーバーの関係?

    BBSを複数設置するのに、BBSごとにフォルダーを作ってそれぞれにCGIスクリプトを入れるように解説しているところもありますが、1つのスクリプトで兼用できるようなら、1つにした方がサーバーへの負荷は少ないものなのでしょうか?もしそうなのでしたら、それはCGIスクリプトが少なくなって、その分のファイル容量が軽くなったからとはちがいますよね?あとサーバーの負荷をすくなくするのに、CGIで呼び出す(表示)のでなく、html文で呼び出す・・などと言うようなことが書いてあるのですが、このへんの所をどなたか分かりやすくおしえてくださいませ。CGIで作られたhtml文を表示すると言うことなのでしょうが、たとえばbbs.cgiを呼び出した時のぺーじのテンプレートがtemp.htmlとしてそこに書き出される文がlog.textとすると、このlog.text をだけを呼び出すと言うことなのでしょうか?でもlog.hrmlでないから、ブラウザーでよびだせるのかなー?私とんちんかんな事いってるかも・・・よろしくお願いします。

    • ベストアンサー
    • CGI
  • 情報処理の問題

    情報処理のレポート課題で出た問題なんですが、わからない問題(おそらく基本中の基本)があるので、ぜひ教えてください。   1.2の補数を使って、2進数の01001100-0111100の計算を行いなさい。   これの答えは16でよいのでしょうか? 2.下記の使用のディスク装がある。下記の問いに答えよ。   平均シーク時間(ミリ秒)     18   回転数/分           3000   有効記憶容量(バイト/トラック) 20000   トラック数/シリンダ      20   シリンダ数/ディスク      600   ディスク数/装置        1   (1)最大記憶容量は何メガバイトか   (2)データ転送速度は何キロバイト/ミリ秒か   (3)1ブロック4800バイトのデータが格納されている場合、このデータ1件当たり   の平均アクセス時間(ミリ秒)は? 3.誤り制御とは の三題です。 できれば解答を教えてもらいたいのですが、ヒントだけでもいただけると幸いです。よろしくお願いします。

  • PHPのfgetcsvのデリミタについて

    すごく初歩的な質問で申し訳有りませんが、fgetcsvを用いて、タブ区切りのファイルを読み込もうとしています。が、デリミタにタブを指定する場合、どう記入したらよいかわかりません(T-T)。 どなたかご回答お待ちしております…

    • 締切済み
    • PHP
  • PHP fgetcsv 置換

    失礼します。 例えば要素 $hoge $piyo $temp まで要素があるとして 現在fgetcsvで読み込んだデータを $data[0]を$hogeに置換 $data[1]を$piyoに置換 $data[2]を$tempに置換といったことをやりたいです。 現在 $hoge = 1; $piyo = 2; $temp = 3; $old_fp = fopen($C_result_path, 'r'); //csvを1行をカンマ区切りで読み込む while (($old_data = fgetcsv($old_fp)) !== FALSE) { } fclose($old_fp); } この$old_dataに対して置換していきたいです。 ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • モジュールを使うときの負荷

    変な質問かも知れませんが宜しくお願いします。 CGIを作り、改良や新機能を追加するごとにスクリプトが膨らみ ファイルサイズが大きくなってしまいます。 その負荷を抑えるために、よく、 if分岐で必要に応じたパーツをrequireで読み込んで使っています。 これはとても効果があって本当に頻繁に使うのですが、 今回、モジュールを使いたいと思っています。 しかし、モジュールを使うときには、 useで宣言するのですよね? これでモジュールをインクルード出来る。と本には説明されています 問題はこのとき、結構な容量のあるモジュールをuseで宣言すると、 例えば、50kbの本体プログラムで 100kbのモジュールを使うと 宣言すると、もれなく150kb分のプログラムを動かしている状態に なってしまうのでしょうか? データベースなどを取り扱いたいのですが、use宣言しただけで 大きなモジュール分の負荷がかかるのであれば、悩みます。 どなたかお教え下さい。 また、こういう場合でも動作を軽くする方法があれば、そちらもお教え下さい。 データベースを使って処理するのと、面倒でも1ファイルずつOPEN、closeで split処理してデータを取るのとどちらが良いかかなり悩んでいます。 今回扱うデータがかなりの大きさになるもので・・・^^;; 変な質問ですが宜しくお願いします。

    • ベストアンサー
    • Perl