[PHP-users 23638] Re: アップロードするファイルサイズについて

satoshi @ try-square.co.jp satoshi @ try-square.co.jp
2004年 11月 16日 (火) 05:53:27 JST


藤本です。

HOTTA Michihide <hotta @ net-newbie.com>さん:
> $ cat > abc
> (このままにしておいて、別の端末から)
> $ ps ax|grep cat
>  6076 pts/2    S      0:00 cat
> $ sudo ls -ld  /proc/6076/1
> Password:
> l-wx------ 1 hotta  hotta  64 Nov 15 14:31 /proc/6076/fd/1
> -> /home/hotta/abc

うーん。これだとやっぱりクライアント側のユーザ情報とは紐付かない
んではないでしょうか。

サーバ上のファイル処理に対するプロセスが区別できても、インターネット
上のどのユーザがアップロードしているものなのか、区別するには至らない
のですね。
プロセスが区別できたとしても、それは単にアップロード処理をしている
だけのプロセスであって、そのユーザに対する何のスクリプト処理もまだ
開始していない状態なわけですから。

自前のセッション機構を実装して、セッションIDをサーバとブラウザ間で
自由にやり取りしたところで、直面する問題はやはり同じですね。
アップロードファイルの名前にセッションIDでも埋め込まれるとか
規則があればいいんですが。
最悪、PHPのソースに手を加えて命名規則を自作する手はありますが。

アップロードファイルを監視するのは、セッションも持たない独立スクリプト
という考え方でいる限り、無理なのかなあ。


> ただ、ファイルのアップロード実行中に JavaScript をブラウザ
> 内の別スレッド?で実行させ、そのスレッドから php の監視用
> スクリプトを叩きにいくとか、そのあたりの手法は(できるか
> どうかも含めて)さっぱりでございます(^^;;;

PHPスクリプトからJavaScriptのソースを動的生成することと、JavaScript
からPHPスクリプトをDynamicLoadすることで、そういった双方向通信的な
処理はかなり柔軟に行えるのですが。

アップロード前にファイルの先頭にセッションIDを埋め込んでおくとか、
小細工できればいいんですが、それもHTMLフォームやJavaScriptでは
無理そうだし。

/tmp/phpxxxxxxxxとかいったファイルがサーバ上に生成され、アップロード
の進行に伴ってファイルサイズが増加していくわけですよね。
ファイルの最大サイズはクライアント側であらかじめ取得できるから、
何らかの手段で先にサーバに送り、(ファイルが特定できたとすれば)進行
のパーセンテージを得ることはサーバ側で出来そうです。
ところがやっぱりサーバ側のアップロード処理にヨコ入りして、それを
制御することは、スクリプトで出来る範囲を超えそうです。

やっぱりユーザを区別しない方法しか、思いつかないなあ。

うーんお手上げ。まだ修行が足りません。


----
藤本 悟司

株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル5F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/

Key fingerprint = 95F2 6B3D 0B8C 374A 5E67  CA02 F28F 703A C1A9 8346



PHP-users メーリングリストの案内