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

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

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

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Q&A

1回答

3127閲覧

PHP ファイルアップロード メモリー使用量について

aria0101

総合スコア6

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

0グッド

2クリップ

投稿2018/07/29 06:01

編集2018/08/03 01:42

前提

PHP5.3.3、Apache2.2.34という環境で2Gのファイルアップロードをさせる為、
以下の設定を行いアップロード処理を実現する事は出来ました。

[php.ini]  memory_limit 2G  post_max_size 2G  upload_max_filesize 2G  max_execution_time 0 [httpd.conf]  LimitRequestBody 2147483647

確認したい事

本来はチャンク処理(?)を行い、分割アップロードで組む事になるとは思うのですが、
上記の設定のみで処理をした場合に、メモリ使用量がどうなるのか、気になっています。

Web上で調べていると
・メモリ上に貯めこんでしまうのでメモリを食ってしまう
・メモリ上に貯めこまないのでメモリを食わない
どちらの情報も出てきていて、どちらの情報が正しいのか分かりません。

自分でメモリ使用量を測定してみようと
①TASKLIST /FI "IMAGEnAME eq httpd.exe" をコマンドプロンプトで実行(実際はLoopしてます)
②ファイルアップロード完了後にメモリ最大使用量を測定

$tmp_name = $_FILES["file"]["tmp_name"]; $upload_path = ""; if (move_uploaded_file($tmp_name, $upload_path)) { echo 'アップロード成功!'; } else { echo 'ファイル移動エラー'; } echo memory_get_usage(true);

を実行したのですが、メモリ使用量はあまり変わらず低いままでした。

上記の結果だけを見るとやはりメモリを使っていないように見えるので、
ストリーム処理でアップロードを行っている?なのでメモリを食っていないという事で良いのでしょうか?

実際の所がどうなのか。また、私の測定方法は正しいのか?
お手数をお掛け致しますが、どなたかご教授下さいm(__)m

tasklistの実行結果(2018/07/30 19:16追記)

情報不足申し訳ありません、実行してみました。メモリ使用量は特に増えていないようにみえます。
APACHEは事前にメモリをある程度確保して、それの中で処理をすると思いますが
その確保量を超えない程度でしかメモリが使われていないという事なんでしょうか・・・?

【アップロード前】 イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,368 K 【アップロード中】 イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ httpd.exe 12892 Services 0 1,412 K httpd.exe 632 Services 0 11,408 K

パフォーマンスモニタの実行結果(2018/08/03 10:28追記)

ファイルアップロード処理時の計測結果を記載しました。
以下のレポートは最大値を表示するようプロパティ設定を行いました。
イメージ説明

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

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

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

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

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

m.ts10806

2018/07/29 06:13

高い、低いではなく実際に試した数値を記載してください。PHP5.3.3という非常に古い環境なのはどういった経緯でしょうか。
aria0101

2018/07/29 08:53

memory_get_usageの結果については0.75MBでした。tasklistの結果については現在実行出来る場所にいないので、明日以降記載させて頂きます。古い環境なのは初期構築された際の環境からアップグレードされていないからですね…。こちらについては私が関与出来る箇所ではないのでお許し下さい。私も最新の環境には上げたいのですが…
退会済みユーザー

退会済みユーザー

2018/07/29 13:02

mts10806 centos6/rhel6のphp5.3.3は独自サポート中(セキュリティパッチのみ取り込み)してるからね
guest

回答1

0

ロードモジュールが httpd.exe とのことですので、Windows 系とみなしまして。

パフォーマンスモニタでデータを取ってみるというのは いかがでしょうか?

投稿2018/08/02 06:15

showkit

総合スコア1638

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

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

aria0101

2018/08/03 01:41

パフォーマンスモニタの実行結果を記載させて頂きました。Private Bytes、Working Setを値を見れば良いのかなと思うのですが、メモリは全然占有していない。という認識で問題ないですよね…?
showkit

2018/08/03 02:10

占有している していないの判断は、他の何かと比べてのものと思いますので、他にサーバプログラムがあればそれと比較してみるのもよいかもしれません。全体に対してのパーセンテージ・他のプログラムとの比較でで aria0101 が判断なさるのがよいかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問