带有睡眠延迟的PHP Codeigniter加载页面
我想从数据库中获取数据,并在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(
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);
}
?>