如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据
主要了解的技术: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();
}
2 回答1.5k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答959 阅读✓ 已解决
2 回答1k 阅读
1 回答905 阅读
1 回答868 阅读
1 回答859 阅读
因为PHP是顺序执行的,执行到哪里,输出就好了。
这里主要涉及到
str_repeat()和flush()
俩个函数和浏览器缓冲区大小。不同浏览器缓冲区大小不一样,str_repeat值也不一样,只有这一个细节需要注意。