带有睡眠延迟的PHP Codeigniter加载页面

带有睡眠延迟的PHP Codeigniter加载页面,php,html,codeigniter,Php,Html,Codeigniter,我想从数据库中获取数据,并在codeigniter视图中延迟显示结果 我的代码如下所示: function loadPage($data) { for($i = 0; $i < count($data); $i++) { $this->load->view('mypage', $data[$i]); sleep(5); } } 函数加载页($data){ 对于($i=0;$iload->view(

我想从数据库中获取数据,并在codeigniter视图中延迟显示结果

我的代码如下所示:

   function loadPage($data) {
       for($i = 0; $i < count($data); $i++) {
          $this->load->view('mypage', $data[$i]);
          sleep(5);
       }
   }
函数加载页($data){
对于($i=0;$iload->view('mypage',$data[$i]);
睡眠(5);
}
}
但这只会加载一次页面并显示所有数据。我需要的是加载带有
$data[0]
的页面,延迟5秒,加载带有
$data[1]
的页面,等等

请给我一些建议。多谢各位

编辑:

我想用php实现这一点。不是javascript或jquery


$data
数组发送到视图文件,因为我们无法从视图文件返回控制器以始终执行下一行代码

因此,代码需要放在视图文件本身中

$data
作为数组

<?php 
    foreach($data as $row) {
?>
//use `$row` where you want to use in the HTML section of the view file
<?php
    sleep(5);
     }
?>

//在视图文件的HTML部分中要使用的位置使用“$row”
注意:阅读代码后有一个基本问题 您正在从控制器函数调用view file,这是完全正确的。 但是一旦调用完成,并且您在视图文件中,您是否调用控制器函数来执行for循环的下一部分


Codeigniter是一个MVC(模型-视图-控制器)框架。从视图中调用函数确实不是一个好主意。

PHP在服务器中处理并将处理后的html返回到浏览器。这就是它的工作原理。但是正如您在评论中所解释的,我认为您想要做的是在for循环运行时向浏览器显示内容

要做到这一点,您需要使用输出缓冲(AFAIK,CI已经在核心中调用了ob_*方法),因此它可能会导致问题(或者可能无法像您预期的那样工作)。但是,我建议您不要多次加载视图,而是将数据传递到视图并在那里循环(并通过休眠逐个显示结果)

你可以这样做

在控制器中:

public function index(){
    $data = [1,2,3,4,5];
    $this->load->view('mypage', ['data' => $data]);
}
在您的视图(mypage.php)中:



希望有帮助:)

将睡眠放在加载视图之前。中缺少打开括号的功能loop@Bugfixer我试过了,但没有成功。睡眠(5)应该会有相当大的延迟。但是,一旦for循环完成运行,页面将被加载。你的意思是没有调用睡眠函数吗?@NimeshkaSrimal睡眠函数被调用。问题是,如果我在$data[]中有3个结果。然后页面将延迟15秒(3x5),然后加载带有$data[1]、[2]和[3]的页面“mypage”。@RubahMalam是的,这就是它的工作原理。php在服务器端执行,并将处理后的html返回到浏览器。是否希望在页面中逐个显示它们?比如先显示,然后等待5秒,然后是第二秒?
<?php
while (@ob_end_flush());      
ob_implicit_flush(true);

for($i = 0; $i < count($data); $i++) {
    echo $data[$i];
    sleep(3);
}
?>