PHP执行数据库操作,自动刷新页面,防止网页超时

说明:

对数据库进行初始化或修改等操作时:
1、简单的直接使用sql语句完成。
2、稍微复杂点,可以通过执行php代码来完成(读数据再写/修改数据)。

使用php代码的时候(非命令行),我们可能会遇到网页超时的情况,解决方法一般有三种:
1、设置php.ini:
max_execution_time
2、代码中添加:
set_time_limit(0); //0表示不超时
3、页面自动刷新,将整个工作分批完成:
页面可以随着执行的过程变化,比如动态地告诉用户执行到多少了,而不是单页面的等待。
下面,主要整理了一下第三种方式

页面自动刷新:

页面刷新<==>页面跳转,当某个条件成立时停止跳转。
页面跳转:输出meta标签来实现

if($flag){
  //跳转页面,xxx为该php文件的文件名
  echo '';
}else{
  //刷新停止
}

刷新同时传递参数,控制数据库操作:

在meta的url中,我们可以使用Get的方式来传递一个参数。
这个参数可以用来变化SQL语句的limit,实现每次执行一部分的功能。

$page = isset($_GET['page']) ? $_GET['page'] : 0;

//用$page构造sql语句或其它功能
//数据库操作或其它功能

//设置$flag
$flag = $pdostatement->rowCount() == 0;  //比如数据库影响行数

//决定 跳转刷新 或 停止
if($flag){
  //跳转页面,xxx为该php文件的文件名
  echo '';
}else{
  //刷新停止
}

假设,对某字段数据+1,具体实现:

现在对SQL还不是很熟悉。
如果只是limit限制,可能会出现:已被查询过的数据 再次被查询出来 执行第二遍的情况?
个人觉得,最好加上主键的order by


prepare($sql);
    $pdostatement->execute();
    $pdostatement->setFetchMode(PDO::FETCH_NUM);
    $num = $pdostatement->rowCount();

    if ($num == 0) {
        echo "sql执行完毕";
    } else {
        echo "正在执行sql
"; $sql_update = "UPDATE table_name "; while (list($col_num, $col_id) = $pdostatement->fetch(PDO::FETCH_NUM)) { $col_name++; $sql_update .= <<prepare($sql_update); $pdostatement_update->execute(); $num_update = $pdostatement_update->rowCount(); if ($num_update == 0) { echo $gfc_id . "修改出错,停止更新"; } else { echo ''; } } } catch (PDOException $e) { echo "数据库连接失败" . $e->getMessage(); //连接失败,获取错误信息 exit; } ?>

你可能感兴趣的:(PHP执行数据库操作,自动刷新页面,防止网页超时)