人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【PHP】PHP5.2を使用したWebシステムで、1GBのファイルをアップロードしたいと考えています。
PHPマニュアルの記述のとおりに考えると、
memory_limit ≧ post_max_size ≧ upload_max_filesize
の関係である必要があるようです。(一般的に)

ところが、サーバのRAMが512MBしかありません。
1.memory_limitを有効にする場合、memory_limitに512MBよりも大きい数字を設定してもよいものなのでしょうか。(スワップありきの設定?)
2.memory_limitはpost_max_sizeよりも小さな値でも大丈夫なのでしょうか。
3.そもそも、RAMが512MBのサーバでPHPを利用して1GBのファイルをアップロードするのは難しいのでしょうか。(タイムアウトは長く設定するとして…)

これらについて、どれか1つでも構いませんので、出来る限り情報のソース付きでご教示いただけたらと思います。
よろしくお願いいたします。


●質問者: j1987
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP RAM Web いもの アップロード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● aside
●35ポイント ベストアンサー

1.仮想メモリがなんとかしてくれますが、1GBを4人が一斉にアップロードしたりすると、4GB分のメモリが使われてかなり不安定になります

(ECC付きメモリを使うと落ちにくくなりました)

2.動く場合と動かない場合がありました(linux系OSだと比較的安定)、memory_limit ≧ post_max_sizeにしたがったほうが無難そう

(memory_limit = -1で使用メモリ無制限)

3.かなり無謀です、サーバが市内にあっても失敗率高かったです、コメントのFTPにするなり、分割して上げてもらうなりするのが無難です


http://q.hatena.ne.jp/1178874933

http://q.hatena.ne.jp/1138084435

◎質問者からの返答

>asideさん

回答ありがとうございます。

やはり厳しいですよね…。

スワップ領域を相当量取ってもどうか…というところでしょうか。

もし可能でしたら追加でご回答お願いしたいのですが、

「4GB分のメモリが使われて」とありますが、ファイルのアップロードの場合でも

POSTであれば一旦全ファイル容量分がメモリに蓄積されるのでしょうか。

memory_limit分だけ読んでは(ハードディスクに)書き、読んでは書き…というようなイメージではないのでしょうか。

よろしくお願いします。


2 ● Snufkinski
●35ポイント

"memory_limit"は、小さい値であれば、その数値以内でメモリの内容をテンポラリにフラッシュ(書き出す)するのだと思います。

実装済みのメモリ内かつPHPに割り当てて良い数値にしないとメモリを使い果たしてプロセスが落ちる可能性があると思います。

(ウォッチドッグ等の監視サービスによって監視されていれば)


時間が掛かる処理になるのであれば、その他に

max_execution_time の指定も必要です。

それ以内に終わらなければ、異常だと判断されて中断されます。


陥りやすい落とし穴 - PHPプロ!マニュアル

PHP設定を変える、調べる - phpspot

◎質問者からの返答

>snufkinskiさん

回答ありがとうございます。

一行目あたりのことについて詳しく書かれたページがあればありがたいのですが…。

max_execution_time の情報もありがとうございました。

今回はひとまず1GBというファイルサイズを諦めることにしました。

どうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ