首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在实时执行每个代码语句后回显状态消息?

如何在实时执行每个代码语句后回显状态消息?
EN

Stack Overflow用户
提问于 2017-02-20 06:30:10
回答 2查看 77关注 0票数 0

我们都看到过这些程序--在每个任务完成后显示一条消息--如果在某个时候出现了错误,它就会显示错误。例如:

代码语言:javascript
复制
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

我想用一个脚本来做这件事,我必须告诉我脚本在哪里有问题。现在,我没有设置任何预定义的错误消息,只是确认。但如果需要的话,可以在以后再做。我不需要任何人给我一个新的代码,如何压缩档案,因为这个脚本工作良好。我将为一个新的函数编辑它,我希望能够看到进程,特别是如果我在前端使用它作为我的用户的服务。

守则:

代码语言:javascript
复制
$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>|&nbsp;&nbsp;&nbsp;&nbsp;|----</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();,这样它就可以被通用地调用:

代码语言:javascript
复制
function debugScript($string, $x='0') {
    if ($x === 1) {
        echo $string;
        ob_flush();
        flush();
    } else {
        return $string;
    }
}

并编辑了所有的$debug语句如下:

代码语言:javascript
复制
$debug='{message}<br />'; debugScript($debug, 1);

它只在脚本完成后显示消息,而不是实时显示。我做错了吗?

EN

Stack Overflow用户

发布于 2017-02-20 09:26:31

您是否尝试在回显消息之后刷新PHP?

代码语言:javascript
复制
ob_flush();flush();

这将迫使PHP向客户端发送输出(即上次刷新后执行的任何回显)。

查看PHP手册以查看代码示例。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42337856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档