首页 > PHP安装网站的时候,前端动态显示数据库创建了哪个表的效果是怎么实现的?

PHP安装网站的时候,前端动态显示数据库创建了哪个表的效果是怎么实现的?

如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据


$table_name = 'user';
echo '正在创建数据表:'.$table_name;
//action code
$result = $flag ? '成功':'失败';
echo '数据表'.$table_name.'创建'.$result;

因为PHP是顺序执行的,执行到哪里,输出就好了。
这里主要涉及到str_repeat()和flush()俩个函数和浏览器缓冲区大小。
不同浏览器缓冲区大小不一样,str_repeat值也不一样,只有这一个细节需要注意。


主要了解的技术:PHP OB缓存原理
PHP缓存机制——OB缓存

可以参考onethink安装的代码:

function create_tables($db, $prefix = ''){
    //读取SQL文件
    $sql = file_get_contents(MODULE_PATH . 'Data/install.sql');
    $sql = str_replace("\r", "\n", $sql);
    $sql = explode(";\n", $sql);

    //替换表前缀
    $orginal = 'youyu_';
    $sql = str_replace(" `{$orginal}", " `{$prefix}", $sql);

    //开始安装
    show_msg('开始安装数据库...');
    foreach ($sql as $value) {
        $value = trim($value);
        if(empty($value)) continue;
        if(substr($value, 0, 12) == 'CREATE TABLE') {
            $name = preg_replace("/^CREATE TABLE `(\w+)` .*/s", "\\1", $value);
            $msg  = "创建数据表{$name}";
            if(false !== $db->execute($value)){
                show_msg($msg . '...成功');
            } else {
                show_msg($msg . '...失败!', 'error');
                session('error', true);
            }
        } else {
            $db-> ($value);
        }

    }
}
function show_msg($msg, $class = ''){
    echo "<script type=\"text/javascript\">showmsg(\"{$msg}\", \"{$class}\")</script>";
    flush();
    ob_flush();
}

这个有点难啊,你判断一下页面进来的时间。另外每次修改数据的时候记录下来时间到数据库。然后对比这两个时间,如果相近就显示为 正在修改数据。这样可能比较简单,实现的方案当然可以有很多种了

【热门文章】
【热门文章】