我最近将我的抓取/解析 PHP 代码移到了 Codeigniter。它使用cURL和SimpleHtmlDom类从目标 URL 检索数据,这些数据随后由模型函数几个其他库处理。
有几个对外部 Web 和 API 的请求,因此原始 PHP 脚本最多需要 20 秒才能加载完整的页面,但没关系,因为 PHP 被分成几个块,并且当较低的进程正在运行时,页面已经呈现HTML,在处理和显示其余数据时,用户可以阅读该 HTML。
切换到 Codeigniter 的问题是,在完全执行 Controller 脚本之前不会呈现 HTML,即使数据进程被拆分为块并由单独的 View 加载也是如此。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class HomePage extends CI_Controller {
public function index()
{
$this->load->library('simple_html_dom');
$this->load->library('library1');
$this->load->library('library2');
$this->load->library('library3');
$this->load->model('HomePage_model');
$this->load->view('templates/header');
$targeturl = 'http://www.example.com';
$variable1 = library1::method1($targeturl);
$variable2 = $this->HomePage_model->method2($targeturl);
$data1 = array('variable1' => $variable1, 'variable2' => $variable2);
$this->load->view('first_set_of_data', $data1);
$variable3 = library2::method2($targeturl);
$variable4 = $this->HomePage_model->method3($targeturl);
$data2 = array('variable3' => $variable3, 'variable4' => $variable4);
$this->load->view('second_set_of_data', $data2);
$curlinfo = $this->HomePage_model->cURLmethod($targeturl);
$data3 = array('curlinfo' => $curlinfo);
$this->load->view('third_set_of_data', $data3);
$this->load->view('sidebar');
$this->load->view('templates/footer');
}
}
/* End of file homepage.php */
/* Location: ./application/controllers/homepage.php */
我并没有试图优化我的代码以使其运行得更快,它已经被修改了好几次......我想做的是随着每个视图对应的数据准备好而逐步加载视图,而正在处理其他视图。