2015-12-04 17 views
0

我正在嘗試創建一個json文件,並且每次使用此命令進入頁面。PHP僅在文檔啓動時創建備份,會話

if(!isset($_SESSION['backup_active'])) 
{ 
    $backup=fopen("backup/".time().".json", "w"); 
    fwrite($backup, json_encode($list)); fclose($backup); 
    $_SESSION['backup_active']=true; 
} 

這裏做的事情是,當我進入頁面後它會創建備份,但是當我刪除備份文件,然後再試一次它不會產生一個新的。 創建我的備份文件後,我想調用它並將其放入另一個.json文件中,如下所示。

session_start(); 
       if(isset($_SESSION['backup_active'])) 
       { 
        $fBackup= "backup"; 
        $lastFile= end($fBackup); 
        $listFile = file_get_contents($lastFile); 
        file_put_contents('list.json', $listFile); 
        session_destroy(); 
       } 

但是,這似乎並不奏效。我使用end()方法取得最後製作的備份文件,然後將其放入list.json文件中。

任何人都可以幫助我解決這個問題嗎?

+1

_「當我刪除備份文件,然後重試它不會創建一個新的」_ - 你是什麼意思,你手動刪除文件,然後再次調用第一個腳本?那可能是因爲你的會話仍然包含值爲'true'的條目'backup_active',所以你的腳本不會做任何事情。 – CBroe

+0

手動!因爲當我刷新頁面它不會創建另一個備份,所以我試圖手動刪除它,看看它是否會創建另一個,但它不會,該文件夾保持空 –

+1

在代碼中的一個問題,你不能用end()函數從目錄中取出最後一個文件,您必須使用這裏提到的腳本之一在答案中 - http://stackoverflow.com/questions/1491020/php-get-the-latest-file-addition-in-a-directory – Armen

回答

-1

爲什麼此代碼無法正常工作,在我嘗試獲取$latest_filename後,我得到一個bool(false)作爲var_dump上的輸出。爲什麼我得到這個。當我嘗試這樣的事情:

$backupFile = file_get_contents("listbackup.json"); 
file_put_contents('list.json', $backupFile); 

它的工作原理,但是當我在這裏嘗試此代碼它不是爲什麼?我該如何解決這個問題。

session_start(); 

if (isset($_SESSION['active'])) { 
    $path = "backup"; 
    $latest_ctime = 0; 
    $latest_filename = ''; 
    $d = dir($path); 
    while (false !== ($entry = $d->read())) { 
     $filepath = "{$path}/{$entry}"; 
     if (is_file($filepath) && filectime($filepath) > $latest_ctime) { 
      $latest_ctime = filectime($filepath); 
      $latest_filename = $entry; 
     } 
    } * *$latest = file_get_contents($latest_filename); 
    file_put_contents('list.json', $latest); * *session_destroy(); 
}