ちょっと検証を行うために、大量のPOSTを行うHTMLフォームを作成していた。
検証内容は、
MySQLから参照したデータをテーブルとテキストボックスを使って編集可能なテキストボックスを使って表示をする。その中からどれでも良いので編集して更新をかける時に、PHPで差分や空白データの確認を行いそれらを除外したデータのみのUpdateを行ったほうが早いか、それともMySQLに全部渡して全てUpdateさせて方が早いか。
というもの。
MySQLはUpdateする前にUpdate前の値とUpdate後の値を比較し、それらが同一の場合はUpdateをしないという仕様の確認から発展した検証であった。
さて、本題に入ります
今回HTMLフォームからPOSTしようと思った値は7000レコード。
1000ユーザー分のレコードがあり、各ユーザ7つのカラムで情報を持っている。
これを表示して、テキストボックスに表示して、HTMLフォームを作成した。
POSTして、POST先でprint_rで確認したところ、十分に確認できず、数えたら「1000」個分のPOSTデータしか受け取れていなかった。
/var/log/httpd/error_logを見てみたら以下のようなログが出ていた
PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.
どうやら、PHP側の設定でデフォルトでPOST数の上限が「1000」に設定されている模様。
php -i でphpinfoから確認してみると、やはり1000のようだ
# php -i | grep max_input_vars max_input_vars => 1000 => 1000
php.iniでの変更は影響範囲意が大きいので、以下の記述を.htaccessに追加して対応しました!
php_value max_input_vars 10000
以上!
コメント
おはようございます。
>php.iniでの変更は影響範囲意が大きい。
phpのバージョンによるtimezone関係の警告がでていたんで、
.htaccessでログ出力させないようにしたくらいかな。
php.iniに関わらずconfファイルはデフォルトからあんまり数値を変えたくないですね。
変更する場合は作業記録をのこします。
wordpressでクローラにping飛ばすプラグインがありますけど、
mod_fcgidがio関連のタイムアウトになってました。
時間をのばしてあげたら、処理がおわるようになったが
サイト表示出来ないドメインが発生。数値を元に戻したら問題なし。
結局、似たようなプラグインのせいなのか?
ping飛ばし先が多かったのか?
プラグインを調整してなおしたみたいです。
上記はplesk11です。しかも、ドメインごとにphp.iniがある・・・。
そんなの個別に設定できません。デフォルトのまま運用。
こんにちは
私も基本php.iniはほぼほぼ触らないですね。何か問題が発生してからじゃないと触らないです。
デフォルトから変更するのはタイムゾーンぐらいですね。
今まで.htaccessで設定変更できると知らなかったので、今回は自分もすごくためになりました。
頻繁に使う回避策ではないですけど、知ってると便利な方法ですね。
おはようございます。
plesk11では.htaccessでphp関連のディレクティブは設定できないです。
pleskにログインしてウェブサイトとドメインを選び高度なオペレーションを表示させ
ウェブスクリプティングとセキュリティからphpの設定でディレクティブを設定できる所があります。
これでやらないといけないですね。phpinfoで確認しました。
ドメインゴとにこれやるのは大変だ・・・。
こんにちは
.htaccessで設定している AllowOverrideの設定で何か制限しているんですかね。
コマンドで一括で出来そうな気もしますが、難しいんでしょうかね。「*」を使って特定のファイルをガチャガチャーみたいに出来たら楽なんですけどね。
こんにちは。
sdfkojiと申します。
質問をお願いいたします。
max_input_varsについて調べ当たる中で、
こちらにたどり着きました。
現在このような不具合で困っております。
https://m.chiebukuro.yahoo.co.jp/detail/q12175832812
もし、対応方法をご存知でしたらご教示いただけませんでしょうか。
よろしくお願いいたします。
sdfkojiさん
コメントありがとうございます。
状況調査してみますので明日までお時間ください(๑•̀ㅂ•́)و✧
trippyboy様
ありがとうございます。
お手数をおかけしますが、よろしくお願いいたします。