PHP安装网站的时候,前端动态显示数据库创建了哪个表的效果是怎么实现的?
程序员文章站
2022-03-15 23:51:09
...
如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据
回复内容:
如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据
$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();
}
上一篇: cdr文件用什么打开