php中每个mysql查询之间的延迟

时间:2016-05-26 16:50:12

标签: php mysql ajax

这是我获取mysql表内容的代码

我马上获得了整个数据。

我想在每个查询中加上时间延迟。

$host= "localhost";
$user= "xxxxx";
$pass= "xxxx";
$db="xxxxx";

$connect= mysql_connect($host,$user,$pass);
if (!$connect)die ("Cannot connect!");
mysql_select_db($db, $connect);

$result = mysql_query("
    SELECT
        *
    FROM
        url
");

if($result){
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){

$url = $row['urlss'];
echo '<li>'.$url.'</li>';
}
}

结果输出

row1
row2
row3
row4

我希望以下面的方式获得输出

row1
//wait 5 sec
row2
//wait 5 sec
row3
//wait 5 sec
row4
//wait 5 sec

由于

4 个答案:

答案 0 :(得分:2)

使用客户端脚本jquery / javascript来实现它。

PHP代码:

<?php 
// code for DB connection and query

echo "<ul id='list-results'>";
if($result){
 while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $url = $row['urlss'];
    // display none 
    echo '<li style="display:none">'.$url.'</li>';
 }
}
echo "</ul>";
?>

Jquery的:

// include jquery
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  // read all list tlements
 $( "#list-results li" ).each(function( index ) {
    // fade in each li
    $(this).delay(5000*index).fadeIn();
    });
});
</script>

答案 1 :(得分:0)

如果您想要延迟,那么您可以尝试PHP的sleep功能

$host= "localhost";
$user= "xxxxx";
$pass= "xxxx";
$db="xxxxx";

$connect= mysql_connect($host,$user,$pass);
if(!$connect) die ("Cannot connect!");
mysql_select_db($db, $connect);

$result = mysql_query("SELECT * FROM url");

if($result){
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        $url = $row['urlss'];
        echo '<li>'.$url.'</li>';
        sleep(5); //sleep for 5 seconds
    }
}

答案 2 :(得分:0)

如果我没有错误,我理解正确你需要使用ob_flush() http://php.net/manual/en/function.ob-flush.php

答案 3 :(得分:0)

您可以使用

foreach ($row as $text) {
    //output text, sleep 5 seconds 
    echo $text; 
    ob_flush(); 
    flush(); 
    sleep(5); 

}

但是在这种情况下,javascript可能是更好的选择,因为您首先将所有数据发送到客户端,并使用javascript间隔每5秒迭代$行。

echo '<script type="text/javascript">
    var data = ' . json_encode($rows) . '; 
    var output = document.getElementById("output-id");
    var i = 0;
    var no_rows = data.length;
    var interval = setInterval(function() {
       output.appendChild(document.createTextNode(data[i].columnName));
         i++;
         if (i >= no_rows) {
             clearInterval(interval);
         }
    }, 5000);
</script> ';