2011-10-04 6 views
-1

phpを使用して30秒間続く特定の名前のファイルを作成し、そのファイルを削除することが可能かどうか疑問に思っていました。私はtmpfileとtmpnmeの機能を見ましたが、私はそれらを正しく使う方法を知らなくてはなりません。PHPで一時ファイルページを作成する - 可能ですか?

ウェブページAのボタンをクリックしてから、ウェブページBに30秒間情報を表示したいと考えています。 30秒が経過すると、情報が変更されたり完全に消去されたりします。

可能ですか?

+5

はい、確かに可能ですが、ユーザーに固有のクエリ文字列を含む単一のページを使用してページを検証するのはなぜですか? –

+4

[XY問題](http://www.perlmonks.org/index.pl?node_id=542341)を参照してください。 –

+0

実際に見るプログラムに使用されます。私はボタンをクリックすると、別のページの何かには、プログラムが読み込んだ「シャットダウン」と表示され、シャットダウンプロセスが自動的に実行されます。 – Konzine

答えて

1

PHPは簡単に一時ファイルを作成することができますが、30秒後に実際にファイルを削除するのはあなた次第です。 PHPはスケジューラーではありませんが、cronまたはatであなたのためにスケジュールを立てることができます。

あなたの最善の策は、それが最初に開始だ時に生成されたスクリプトを確認することができ、有効期限を指定するために組み込まれているとして、PHPスクリプトにいくつかの余分なコードを埋め込むために、次のようになります。

世話をします
<?php 

$expires = ...insert some timestamp value here...; 

if ($expires < time()) { 
    unlink(__FILE__); 
    header("Location: somewhere else"); 
    exit(); 
} 

... do whatever you need to here ... 

スクリプト自体の終了。しかし、もしスクリプトが30秒間のウィンドウの外で決してアクセスされなければ、それはそれ自身をきれいにすることができないので、定期的な家事掃除を行うためにはまだ外部の仕事が必要です。

+0

これは私が想像していたものに非常に近いですが、私の頭の上には少しでも揺れません。私の考えは、フォームとPOSTを使い、別のページに投稿することでした。問題は、30秒後に終了するか、デフォルト値に戻すための情報が必要なことです。助言がありますか? – Konzine

+0

親スクリプトに 'at'ジョブを追加して、生成された/子スクリプトを強制終了する外部削除タスクをスケジュールすることもできます。しかし、 'at'と' cron'は秒単位ではなく分レベルにしかスケジューリングできませんので、30秒後に子スクリプトがヌークされることは保証できません。しかし、外部削除と内部時刻チェックを使用すると、簡単にシミュレートできます。もう1つの方法はfork()を実行し、子を30秒間スリープさせてから子スクリプトをリンク解除する方法です。 –

0

たとえば、XMLのようなファイルを作成できます。新しいノードを追加し、タイムスタンプします。その後、あなたのウェブサイトはファイルを読み込み、タイムスタンプに基づいて期限切れでないノードを表示することができます。古いデータを表示しないだけでファイルを削除する必要はありません。また、ノードをロードするときに古いノードを削除して、ファイルが大きくならないようにすることもできます。

+0

ありがとう!私はこのようなものの例やスクリプトを見ることができたのですか? – Konzine

関連する問題