2014-02-24 70 views
2

如何獲得passthru()函數的結果?那是它的真假?我正在使用passthru()函數開發數據庫備份程序。它的運行成功,但如果成功或者不成功,我想顯示一條消息給用戶備份。以下是我的代碼 - 它運行並創建了一個backup.sql文件,但顯示「備份失敗」。PHP passthru()函數結果?

<?php 
$filename = "backup-" . date("d-m-Y"); 
$cmd = "mysqldump -u root dudh_society >c:/Backup/$filename.sql"; 
passthru($cmd); 
if(passthru($cmd) == true) 
{ 
    echo "Backup Succesfully"; 
} 
else 
{ 
    echo "Backup failed"; 
} 
?> 
+1

'中繼()'方法返回空隙[返回無值] –

+0

閱讀手冊請http://ru2.php。 net/passthru並嘗試使用第二個函數參數。 –

回答

6
  1. 功能的簽名是:

    void passthru (string $command [, int &$return_var ]) 
    

    這意味着,如果你想捕捉的外殼程序的退出狀態,給它一個第二個參數:

    passthru($cmd, $status); 
    
    if ($status == 0) { 
        // success 
    } else { 
        // failure 
    } 
    
  2. 如果你打算在頁面上使用echo其他任何東西,它將成爲輸出的一部分。因此,轉儲的MySQL文件末尾將包含「備份成功」,這可能不是您想要的。你必須重定向到另一個頁面輸出的消息有:

    header("Location: http://example.com/result.php?status=$status"); 
    
+0

@Kamlesh注意到'&$ return_var'在成功時返回'0',如果失敗則返回非零數字像Unix命令一樣 http://www.unix.com/shell-programming-scripting/41055-return-代碼UNIX的command.html –