如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据
如题,想要实现的效果是后台更改了哪条数据,在前台也显示正在修改这条数据
<code>$table_name = 'user'; echo '正在创建数据表:'.$table_name; //action code $result = $flag ? '成功':'失败'; echo '数据表'.$table_name.'创建'.$result;</code>
因为PHP是顺序执行的,执行到哪里,输出就好了。
这里主要涉及到str_repeat()和flush()
俩个函数和浏览器缓冲区大小。
不同浏览器缓冲区大小不一样,str_repeat值也不一样,只有这一个细节需要注意。
这个有点难啊,你判断一下页面进来的时间。另外每次修改数据的时候记录下来时间到数据库。然后对比这两个时间,如果相近就显示为 正在修改数据。这样可能比较简单,实现的方案当然可以有很多种了
主要了解的技术:PHP OB缓存原理
PHP缓存机制——OB缓存
可以参考onethink安装的代码:
<code>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(); } </code>