我們都看過這些程序在每個任務完成後顯示一條消息,並且如果在某個點出現錯誤,則會顯示該錯誤。例如:如何在每個代碼語句實時執行後回顯狀態消息?
Task A Done
Task B Fone
etc...
// If an error happens
Error Completing Task Q: {error message}
// Or if no error
Task X Done
Task Z Done
Complete
我想用腳本來做到這一點,我必須準確告訴我腳本出現問題的位置。現在我沒有設置任何預定義的錯誤消息,只是確認。但是如果需要的話,可以在以後製作。我不需要任何人給我一個關於如何壓縮歸檔的新代碼,因爲這個腳本工作正常。我將爲其編輯一個新功能,並且希望能夠看到這些過程,特別是如果我在前端將它用作我的用戶的服務。
代碼:
$zip=new ZipArchive();
if (file_exists($archive)) {
unlink($archive);
}
if (extension_loaded('zip')) {
$debug='<b>Extension (.zip) Is Loaded</b><br /><b><u>Beginning Search For:</u></b> (' . $folder . ')<br />';
if (file_exists(realpath($folder))) {
$debug='<b><u>Found:</u></b> (' . $folder . ')<br />';
if ($zip->open($archive, ZipArchive::OVERWRITE | ZipArchive::CREATE)) {
$debug='<b><u>Archive Opened:</u></b> (' . $archive . ')<br />';
if (is_dir(realpath($folder))) {
$debug='<b>Beginning Recursive Directory Scan Of Folder: (</b>' . basename($folder) . ')<br />';
$files=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder), RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file) {
if (is_dir(realpath($file))) {
$debug='<b><u>Adding Directory:</u></b> (' . basename($file) . ')<br />';
$zip->addEmptyDir(zipDir($file));
$dirTree='<b>|</b><br /><b>|----</b>' . $file . '<br />';
} elseif (is_file($file)) {
$debug='<b><u>Adding File:</u></b> (' . basename($file) . ')<br />';
$zip->addFromString(insertFile($file), file_get_contents($file));
$dirTree='<b>| |----</b>' . basename($file) . '<br />';
} else {
exit($zip->getStatusString());
}
}
} else if (is_file($folder)) {
$debug='<b><u>Adding File In Archive Root:</u></b> (' . basename($folder) . ')<br />';
$zip->addFromString(zipDir($folder), file_get_contents($folder));
} else {
$debug='<b>No Directories Or Files Found In (' . $folder . ')</b>';
}
} if ($zip->close() !== FALSE) {
return true;
}
}
}
}
正如你所看到的,我有$debug
語句還有$$dirTree
語句。我想要/可以選擇顯示堆棧狀態消息或目錄樹(也是實時的)。那麼我怎麼去做這件事呢?提前致謝!
更新
我在一個函數嘗試ob_flush(); flush();
因此它可以被普遍稱爲:
function debugScript($string, $x='0') {
if ($x === 1) {
echo $string;
ob_flush();
flush();
} else {
return $string;
}
}
和編輯所有$debug
語句,像這樣:
$debug='{message}<br />'; debugScript($debug, 1);
這表明這些消息很好,但只能在腳本完成後,而不是實時。我做錯了嗎?
推入數組$數組[] = $調試 – Salman
好和意志,使其顯示$調試語句,因爲它們發生在腳本? –
您可以將消息追加到html,如下所示: - – Salman