PHP :: TMPファイルへの滞在時間はどれくらいですか?
質問
アップロードスクリプトに取り組んでいます。
ユーザーがファイルをアップロードして既に存在する場合(これはすべてAJAXを介して)、それを交換するかキャンセルするオプションを提供します。
ファイルを移動する代わりに、ファイルをTMPに残してAjax応答でそのファイルへのパスを渡すことができるかどうか興味がありました。
ユーザーが、Ajax要求の古いファイルを上書きする場合、ファイルで動作し続けるPHPにパスを渡します。
これが機能するためには、ファイルがPHPのTMP dirにどれくらいの期間とどまるかを知る必要があります
解決
PHPスクリプトが実行された直後に、投稿を介してアップロードされたファイルは削除されます。
によると php.net:「ファイルは、リクエストの最後に、移動または名前が変更されていない場合、一時ディレクトリから削除されます。」
他のヒント
アップロードされたファイルの場合、 マニュアルの状態:
ファイルは、リクエストの最後に、移動または名前が変更されていない場合、一時ディレクトリから削除されます。
したがって、保持されるファイルは別の場所に移動する必要があります。
より一般的には、質問のタイトルが暗示する可能性があるため、一時的なフォルダーはシステムによってクリーンアップされるために残されています。これは、ような関数を使用する場合に当てはまります Tempnam また tmpfile, 、または単に一時ディレクトリに書き込むとき(参照 sys_get_temp_dir).
ubuntuでは、これはすべてのシステムの再起動、または時間間隔で行われます。 /etc/default/rcS
.
いくつかの赤い帽子ベースのディストリビューションでは、 tmpwatch
Cronjobからのユーティリティ。他の人では、 /tmp
パーティションは、を使用してマウントされます tmpfs
ファイルシステム。これは、RAMディスクに似ています(したがって、コンピューターがシャットダウンするとクリーニングされます)。
別の既知のメカニズムはサイズのしきい値です。つまり、一時的なディレクトリが特定のサイズに達すると古いファイルからクリーンアップされます。
/TMPディレクトリのごみ収集が正しく発生し、次の3つの変数があります。
session.gc_maxlifetime = 21600
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetimeを設定すると、各TMPファイルが削除される前に続く秒数になります。 OpenCartで管理者にログインすると、これは自動的にログアウトされるまで秒数です。たとえば、30分を設定するには、1800秒の値になる60秒の30分を行います。
他の2つの変数は、ゴミコレクターがいつ実行されるかに関連しており、これに問題がある場合は上記の値に設定することが重要です。
詳細はこちら:https://www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-ust/