2011-10-04 88 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不是一個調度程序,雖然它可以通過cronat爲您安排事情。

你最好的選擇將嵌入一些額外的代碼插入到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秒之後子腳本被固化。但隨着外部移除和內部時間檢查,您可以輕鬆地進行模擬。另一種方法是fork(),並讓孩子睡眠30秒,然後取消鏈接子腳本。 –

0

您可以創建一個像XML這樣的文件。添加一個新節點併爲其添加時間戳。然後你的網站可以加載文件,並根據時間戳顯示尚未過期的節點。您不必刪除文件就不顯示舊數據。您也可以在加載節點時刪除舊節點以防止文件變大。

+0

謝謝!任何想法,我可以看到這樣的例子或腳本? – Konzine