欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-03-15 23:44:00
...
如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据

回复内容:

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

$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 "";
    flush();
    ob_flush();
}
相关标签: php