• 締切済み

phpでメモリーが足りないと表示されます

現在phpでプログラムを組んでいます 100M程度のcsvファイルを処理したいのですが一旦配列に格納して処理しようとした際 memory exhausが発生してしまいます ini_set('memory_limit', '~M'); memory_limit = -1 などは試してみたのですが毎度128M程度でmemory exhausが発生します 環境は OS:Windows7 XAMPP 1.7.3 PHP: 5.3.1 です またメモリーは6Gほどあります 回答お願いします

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

phpinfo()を実行したときにcoreにmemory_limitの値が表示されますか? 「memory_limit = -1」はphp.iniでおこなっていますか?

mottyomettyo
質問者

補足

>phpinfo()を実行したときにcoreにmemory_limitの値が表示されますか? Local Value,Master Value 共に-1になっています >memory_limit = -1はphp.iniでおこなっていますか? はい C:\xampp\php\php.iniを変更しています

すると、全ての回答が全文表示されます。

関連するQ&A

  • PHP memory limit 対策アプローチ

    昨日構築しているシステムで PHP Fatal error: Allowed memory size of 268435456 bytes exhausted 突然が多発しました。 検索すると「このエラーが出たらPHP.INIのMemory_limit を上げる」と書いてありますが 理由がわからず上げることはNGと上長から言われておりますのですが調査をしたく ただ原因がわからない状態です。アプローチが正しいかアドバイスいただけますと ありがたいです。 ----------------------------------------------------------------- ●発生について 昨夜 21:00位画面上でページが見つかりませんとなる error_logを見たら Fatal error: Allowed memory size of が多発 ↓ Apacheの再起動(stop → start) 解消せず ↓ 検証としてphp.ini を 256mb → 512mbに変更 :解消したが上長承認ないので256mbに戻す ↓ 23:00頃仮想サーバの再起動 →直後すぐにページ確認したが解消せず ↓ 物理サーバの再起動 → 直後すぐにページ確認したが解消せず ↓ 23:45 何もしないでいつの間にか解消 ●ERROR_LOGでみる発生場所 $row = mysql_fetch_array($rs, MYSQL_BOTH) ※MYSQL_BOTH便宜上この設定 ※こちらの対象テーブルが劇的に昨日今日で増えたということはない ●PHPのバージョン 5.1.6 (←古いのでUPGRADEしようとは思っています)   現在のmemory limit = 256mb ●当時の仮想サーバのメモリ状態 topコマンド確認し、2.5G-3Gのメモリフリー ----------------------------------------------------------------- 調査のアプローチ (1)発生プログラムでの処理について A ログイン(特権)→カレンダー表示 : 上記エラー   B ログイン(通常)→カレンダー表示 : 問題なし AとBの違いはAのほうがBよりも3kb程度多めの情報をSessionに入れている Sessionに入れている情報が多い=メモリを使った との検証をしたが256mbとはけた違いに 少ないためプログラムが起因とは考えられない。 (2)該当プログラムだけでMemory 256上限に行くとは思えず  メモリリークが同時に発生していたとしか想定できない(PHP Version 5.1で発生しやすい?)  ただしここはログにも残らず想像 結論 暫定対応は該当PHP上でmemory_limit 指定(PHP.INIが変更できないので) 恒久対応はPHPのVerUP アプローチがやや強引でしょうか?発生原因を特定することは不可能でしょうか? ★疑問点 仮想サーバ・物理サーバを再起動してもダメだった。メモリリークであるならば これで解消するはず 来週月曜日に対応策を上長に提示したいです。 調査方針の指摘事項などなんでもいいので何かアドバイスをいただけませんでしょうか?

    • 締切済み
    • PHP
  • ライブラリをプログラムで追加する方法

    WindowsXPのPHP5(xampp)にて、php.iniではなく、プログラムから、ライブラリの追加をしたいのですが、「ini_set('extension', '../xxx/xxx.dll');」と書いてもうライブラリを見つけられないようです。 書き方を間違えていますでしょうか? また、良い方法はありますか?

    • ベストアンサー
    • PHP
  • php.iniでどちらが正規かな!?

     現代版のXAMPP Control Panel v3.2.1 セットアップしました。  教本の内容は古くて、xampp-win32-1.7.3.exeとの内容で書かれています。    すると、php.iniのプログラムの中身と教本と書いてあることが違います。    「php.ini」ファイルで795行目あたりですが   ; Windows: "\path1;\path2" include_path=".;C:\xampp\php\PEAR" C:\xampp\php\includes" 以上のプログラムで\PEAR"の最後に"ダブルクォーテーション(") で区切られています。   しかし、教本には \PEAR;の最後はセミコロン(;)にと印刷されています。 セットアップしたての(")か、教本の(;) どちらが正規でしょうか  実際のphp.iniが以下で見れます。 最後のアドレスかは、php.iniをZIPで圧縮したファイルが取れます。 参考にされてください。  http://homepage3.nifty.com/mtaiyo/php.ini http://homepage3.nifty.com/mtaiyo/php.zip

    • ベストアンサー
    • MySQL
  • ini_setのpost_max_size

    お世話になります。 ini_setの「post_max_size」がなぜか正常に動作しません。「upload_max_filesize」はうまく動作するのですが・・・。 --------------------------------------------- $aaa = ini_set("upload_max_filesize","2M"); $bbb = ini_get("upload_max_filesize"); $ccc = ini_set("post_max_size","3M"); $ddd = ini_get("post_max_size"); --------------------------------------------- ↑これを実行すると以下のように表示されます。 --------------------------------------------- aaa=16M bbb=2M ccc= ddd=8M --------------------------------------------- 本来「ccc=8M」、「ddd=3MB」となるはずなのですが..。$cccを単体で実行してもうまくいきません。 上記から分かりますように、実行環境のphp.iniの設定は、 memory_limit = 64M post_max_size = 8M upload_max_filesize = 16M となっています。マニュアルには 「memory_limit >= post_max_size >= upload_max_filesizeでなければならない」 とありますので、実際は「upload_max_filesize」を「post_max_size」の8M以下に設定し直さなければならないとは思うのですが、これがini_setがうまくいかない原因になり得るでしょうか? 何かご存知の方がいらっしゃいましたら教えて下さい。PHPのバージョンは4.2.2です。

    • ベストアンサー
    • PHP
  • PHPでメールフォームの送信について

    PHPを勉強して居る者です。 自分のPCにXAMPPをインストールして、 フォームの確認をしたところエラー表示が出ます。 Warning: mail() [function.mail]: Failed to connect to mailserver at "○○○" port 587, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\xampp\htdocs\test\download_00\mail_submit.php on line 54 php.iniの設定はしました。 ローカルではエラーが出るものの、サーバーにアップしてみたところ、正常にフォームは動きました(ただメールのタイトルが文字化け してました) 文字化けに関しては調べようと思います。 ローカルサイトでのフォームの確認は無理なのでしょうか? 駄文で申し訳ございませんが、宜しくお願い致します。

    • 締切済み
    • PHP
  • phpinfoでPHP.iniのパスが/etc/php.iniと表示さ

    phpinfoでPHP.iniのパスが/etc/php.iniと表示される お世話になります。 現在以下の環境でPHPを動作させようとしております。 windows server 2008 R2 Apache 2.2.16 (F:\apache) PHP 5.5.3 (F:\apache\php) http.confにPHPinidirをF:\apahce\phpと記述しております。 php.iniは上記ディレクトリに保存しております。 この状態でphpinfoをapacheのドキュメントルートに設置し実行すると 以下の問題が発生します。 ・phpのバージョンが5.1.6と表示される ・phpini格納ディレクトリが/etc/php.iniと表示される ・php.iniの中で変更した設定が全く反映されない 同様な問題が発生した方はいらっしゃいますでしょうか。 また、解決方法をご存じの方教えていただけますでしょうか。

    • 締切済み
    • PHP
  • phpでxampp環境下での文字化けについて

    プログラムを初めて組んでいるのですが、どうしてもデータベースを使いたいので phpmyadminを使い、いろいろいじっているのですが、phpでデータベースの内容を 表示したときなのですが、どうしても文字化けが直りません。 (日本語だけ文字化けします) いろいろググってみて以下で解決できそうなのですが、書いてある事がさっぱりわからず どなたか分かりやすく解説してもらえませんでしょうか。 phpの文字コードはUTF8 データベース照合順序はutf8_general_ciにはして あります。 最初の 「SET NAMES utf8」というクエリを発行。 というのはすでに意味がわかりません・・。 --------------------------------------------------------- 【状況】 PHPからMySQLにデータ登録し、phpMyAdminで値を閲覧すると、日本語が文字化けしている。 ただし、その状態の値をPHPで取得・表示は普通にできる。 ※PHP、HTMLの文字コードは「UTF8」。データベースの照合順序は「utf8_general_ci」 【対応】(以下の「xampp_path」はXAMPPのインストールパス) データベース接続後に「SET NAMES utf8」というクエリを発行。 もしくはPHP5.2.2以降なら「mysql_set_charset(‘utf8′);」を実行しても良い。 「xampp_path/mysql/bin/my.ini」に以下の項目を追加・修正 [mysqld] character_set_server=utf8 skip-character-set-client-handshake [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8 「xampp_path/phpMyAdmin/config.inc.php」に以下の項目を追加・修正 $cfg['DefaultLang'] = 'ja-utf-8'; $cfg['DefaultCharset'] = 'ja-utf-8';

    • ベストアンサー
    • PHP
  • PHPでファイルダウンロードの上限

    PHPを使ってファイルをダウンロードするプログラムを書きました。 header()で最後にreadfile()で出力する流れですが、htaccessで 「upload_max_filesize」「post_max_size」「memory_limit」を600Mとしましたが、 PHPでダウンロード出来る容量が約100MB程度しかダウンロード出来ません。 色々と調べましたが原因が分かりません。 お分かりになる方、教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP+Linuxについて質問です

    現在CentOS+PHP5.2.1の構成でプログラムを組んでいるのですが、 今までwindowsローカルにxamppを入れて組んでいたので、Linuxに 環境移動しなければならなくなりました。 pearやらgdなどはすべてxamppがやってくれてたのを自分でやらなければなりません(当然ですがw) で、smartyや、pearのライブラリまでは入れ終わったのですが、zip関数を使うのにpecl系のzipライブラリの入れ方がどうしてもわかりません。 php.iniを見た限りでは、/etc/php.d/にある各extension用のiniファイルを読んで、/php/module/野中にあるsoファイルをextensionとして見に行ってるみたいです。 なのでxamppで使っていたextension_zip.dllファイルを/php/module/ に移してphp.iniに、extension=php_zip.dll と苦し紛れに書き込んでリコンパイルしてみましたが、やはり意味なかったらしく。 普段使っているのがdllファイルなのに対し、今回はsoファイルなので、どうすればいいか検討がつきません。どうやったらこれをインストールできれば教えていただければと思います。 ちなみに、私が使いたいと思っているのは、こちら↓ http://php.tonnikala.org/manual/ja/ref.zip.php です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • php4でエラーが発生したか検知する方法はありますか?

    php4で、ini_set("display_errors",0); でエラーを非表示にした場合でも、 WarrningやFatal Errorが発生したか判別する方法はあるでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • CanonプリンターMP560の総印刷枚数を確認する方法を教えてください。
  • Canon MP560の印刷枚数を確認する方法について教えてください。
  • CanonプリンターMP560の印刷枚数を確認する方法について教えてください。
回答を見る