PHP Codeigniter加载页面,具有睡眠延迟

时间:2017-12-19 07:55:11

标签: php html codeigniter

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

我的代码如下所示:

df <- read.table(text = "Planner.Group.No Order.Status
1               P0B     Finished
2               P0C     Finished
3               P0C     Finished
4               P0A     Finished
5               P0C     Finished
6               P0B     Finished
7               P0C     Finished", header = TRUE)
df


library(tidyverse) # for ggplot2 and forcats

# using factors
ggplot(df, aes(x = factor(Planner.Group.No, 
                          levels = names(sort(table(Planner.Group.No), decreasing = T))))) + 
  geom_bar()

# using factors with forcats:
ggplot(df, aes(x = fct_reorder(f = Planner.Group.No, 
                               x = Planner.Group.No, 
                               fun = length, 
                               .desc = TRUE))) + 
  geom_bar()

但这只会加载一次页面并显示所有数据。我需要的是使用 function loadPage($data) { for($i = 0; $i < count($data); $i++) { $this->load->view('mypage', $data[$i]); sleep(5); } } 加载页面,延迟5秒,使用$data[0]加载页面,依此类推。

请指教。谢谢。

编辑:

  

我想用php做这件事。不是javascript或jquery。

2 个答案:

答案 0 :(得分:1)

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

要做到这一点,你需要使用输出缓冲(AFAIK,CI已经在核心中调用ob_ *方法),这样可能会导致问题(或者可能无法正常工作。)但是,不要多次加载视图,我建议你将数据传递给视图并在那里循环(并在睡眠状态下逐个显示结果。)

你可以这样做。

在您的控制器中:

HTTP Debug Sessions

在您的视图(mypage.php)中:

public function index(){
    $data = [1,2,3,4,5];
    $this->load->view('mypage', ['data' => $data]);
}

希望有所帮助:)

答案 1 :(得分:0)

$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);
     }
?>

注意:阅读代码后的一个基本问题 您正在从控制器功能调用视图文件是绝对正确的。 但是一旦调用并且你在视图文件中,你是否正在调用控制器函数来执行for循环的下一部分?

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