ホームページ > バックエンド開発 > PHPチュートリアル > PHP安装网站的时候,前端动态显示数据库创建了哪个表的效果是怎么实现的?

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

WBOY
リリース: 2016-06-06 20:20:53
オリジナル
1292 人が閲覧しました

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

回复内容:

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

<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>
ログイン後にコピー
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート