2011-01-11 21 views
45

私はアップロードスクリプトを作成中です。php :: tmpファイルの保存期間は?

ユーザーがファイルをアップロードして既に存在している場合は、ユーザーに警告する(これはすべてajaxを通じて行われます)、そのファイルを置き換えるか、キャンセルするかを選択します。

ファイルを移動するのではなく、 ファイルをtmpに残して、そのファイルへのパスをajaxレスポンスに戻すことができるかどうか不思議でした。

ユーザーが古いファイルを上書きすると、そのajax要求はパスをパスしてphpに戻り、ファイルを引き続き処理します。これが機能するために

しかし、私はファイルをPOSTを通じてアップロードどのくらいのファイルがPHPのtmpにとどまるDIR

+0

私は、ファイルアップロードツールを実行すると、ファイルがサーバー上にすでにある場合は、私が最初に確認してください - それはすでに存在している場合、私は前の数字を使用して新しいファイル名を変更しますそのファイル名の数に応じて、ファイル名を指定します。闘争はなく、皆は幸せに家に帰る。 –

+1

ajaxレスポンスでパスをtmpに戻すと、誰かが次のリクエストを混乱させる可能性があり、その値を置き換えて別の場所から別のファイルを移動する可能性がありますか? –

+1

あなたが本当にやることができるのは、tmpディレクトリから指定したディレクトリにファイルを移動することです。あなたのtmpディレクトリにあるものが分かっている可能性は少しありますが、思想。 – Hailwood

答えて

60

知っておく必要がありますが、PHPスクリプトの実行が終了した直後に削除されます。

によると、php.net: "ファイルは移動されていないか、名前が変更されていない場合、要求の最後に一時ディレクトリから削除されます。"アップロードされたファイルについては

+0

でも、HTML入力からアップロードされたファイルですか? – Hailwood

+0

ファイルがどこから来たかは関係ありません。また、ブラウザの各入力はhtmlの1つです;-) – zerkms

+0

本当ですか? phpは書き込みや削除を行うすべてのファイルを追跡しますか?私はそれがないと確信しています!私は、画像のためにサムネイルを生成するPHPスクリプトを持っています、そして、スクリプトが実行された後にPHPがファイルを削除した場合、サムネイルは決して存在しません! –

18

the manual states:それは離れて を移動または名前変更されていない場合

ファイルは リクエストの終了時に 一時ディレクトリから削除されます。

保存するファイルは別の場所に移動する必要があります。

さらに一般的に、あなたの質問のタイトルが示唆するように、一時フォルダはシステムによってクリーンアップされたままになります。これは、tempnamまたはtmpfileのような関数を使用する場合、または一時ディレクトリに書き込む場合にのみ当てはまります(sys_get_temp_dir参照)。

Ubuntuでは、これはシステムリブートごとに、または/etc/default/rcSで定義されている時間間隔で実行されます。

一部のRed Hatベースのディストリビューションでは、クロムジョブからtmpwatchユーティリティを使用して行われます。他のものでは、/tmpパーティションはRAMディスクに似ているファイルシステム(コンピュータがシャットダウン時にクリーニングされる)であるtmpfsを使用してマウントされます。

もう1つの既知のメカニズムはサイズしきい値です。これは、一時ディレクトリが特定のサイズに達すると古いファイルからクリーンアップされることを意味します。

0

は、/ tmpディレクトリのガベージコレクションが正常に起こることを確認するためにPHPに設定する必要がある三つの変数があり、彼らは以下のとおりです。

session.gc_maxlifetime = 21600 
session.gc_probability = 1 
session.gc_divisor = 100 

セットsession.gc_maxlifetimeは秒数であることをご各tmpファイルを削除する前に保存しておきます。 OpenCartで管理者にログインすると、自動的にログアウトされるまでの秒数が表示されます。たとえば、半時間を設定するには、30秒間に60秒を実行します。これは1800秒の値になります。

その他の2つの変数は、ガベージコレクタの実行時に関連しており、問題がある場合は上記の値に設定することが重要です。ここ

さらに詳しい情報: https://www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-up/

+0

これは、ファイルストレージを使用するように設定されたPHPセッションでのみ有効で、ファイルアップロードによって作成された一時ファイルには関係ありません。 –

関連する問題