質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6523閲覧

phpでメモリ上限がないのにメモリサイズエラーが表示される

sakuramob

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/21 07:08

編集2019/02/21 07:35

前提・実現したいこと

DolibarrというPHPで書かれたOSSで負荷テストを行っています。
DBにデータを入れて、画面表示やファイルのエクスポートなどを行っているのですが、25万件データを入れた状態で、エクスポートしたところで、下記エラーが発生しました。

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 4096 bytes) in xxxx.php

こちらのリンクを参照したところ、php.iniのmemory_limitを引き上げることで解決できるかもと書いてあったので、
memory_limitを確認してみたところ、-1(上限なし)になっていました。
また、敢えてmemory_limitに512MBを記載しても、同じエラーが表示されました。

memory_limitに上限がなくても、メモリーサイズエラーが出てしまうということは、処理できるデータ数の限界ということなのでしょうか。
ご知見ある方、お願いします。

バージョンは下記の通りです。

  • Dolibarr:8
  • PHP:7.2.15
  • MySQL:8.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/21 07:13

PHPのバージョンを追記願います。 また、具体的な数値を設定した場合はどうでしょうか。
sakuramob

2019/02/21 07:17

コメントありがとうございます。 PHPバージョンは7.2.15です。 数値、試しに512MBを設定してみたのですが、同様のエラーが表示されてしまいました。
mayoi_maimai

2019/02/21 07:22

変更後に再起動はされていますよね?
m.ts10806

2019/02/21 07:22

質問は編集できますので適宜状況追記願います。
yoorwm

2019/02/21 07:23

マシンのスペックの場合もあるけど、どちらかというとプログラムの問題かと。
sakuramob

2019/02/21 07:36

質問に追記をしました。 php.ini編集後はapache再起動しています。
mix-peach

2019/02/21 07:37

php.iniではなく、phpinfo()とか、ini_get('memory_limit')とかで、memory_limitを確認してみてはどうでしょうか。 もしそこでphp.iniの設定値と異なる値が表示されるならば、php.iniじゃないところで制限をかけているか、確認してるphp.iniが間違っているかのどちらかではないかと・・。
CHERRY

2019/02/21 07:42

実際のところ、free コマンド等で確認すると メモリはどれぐらいあるのでしょうか?
sakuramob

2019/02/21 07:48 編集

mix-peachさん>下記で確認したところ、上限なしになっていました。 ``` root@XXXX:/var/log# php -i | grep memory_limit memory_limit => -1 => -1 ``` CHERRYさん>下記の通りです。 ``` root@XXXXXX:/var/log# free -m total used free shared buff/cache available Mem: 983 497 239 15 246 323 Swap: 1023 300 723 ```
退会済みユーザー

退会済みユーザー

2019/02/21 08:28 編集

コンソールでのphpとweb上のphpとで設定違うことがあるから、phpinfo()での確認よろしく。(apache内モジュール動作とかならメモリ確保の成約はむしろapacheにも関係あり?)それと、phpの動作モードも詳しく。(モジュール動作、php-fpm、その他)
sakuramob

2019/02/21 08:42

m6uさん>phpinfo確認したら、memory_limit256Mでした!!! そして、-1設定しなおしたらいけました!ありがとうございます!! ちなみにphpの動作モードって、phpinfo()の"ServerAPI"見ればいいのでしょうか? そこは、Apache 2.0 Handlerでした。
退会済みユーザー

退会済みユーザー

2019/02/21 08:46

自己解決したことにして、回答を自分で書いてベストアンサーつけてくださいね。
guest

回答1

0

自己解決

phpinfo()で確認したところ、memory_limitが256MBでした。
phpinfo()で参照しているmemory_limitを-1(制限なし)にし、apacheを再起動したところ、エラー解消され、ファイルがエクスポートできるようになりました。

多くのヒントを下さった方々にこの場を借りて感謝を申し上げます。ありがとうございます!!

投稿2019/02/21 08:52

sakuramob

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問