【问题标题】:How to execute function after loading the view加载视图后如何执行函数
【发布时间】:2018-08-16 09:33:02
【问题描述】:

我正在使用Codeigniter,并且我的控制器中有两个功能。问题是我的视图文件加载速度很慢。当我弄清楚时,我才知道在我的函数中在加载视图页面之前有一个函数调用,例如

$this->_review_and_give_point_for_alert($alertDetail, $alertID, $alertUserId, $email, $alert_url, $statusImage, $userStatus); 

这会导致加载视图页面变慢。查看文件只是一条“谢谢”消息。

我没有通过这个应该显示在视图文件中的函数获得任何数据。事实上,它正在更新数据库中的数据。所以问题是我如何加载我的视图文件,即快速感谢您的消息。任何帮助都将非常感激。

【问题讨论】:

    标签: php function codeigniter codeigniter-3 codeigniter-2


    【解决方案1】:

    @Hamed,这不是在更新记录后展示视图的目的吗?

    如果由于某种原因更新失败怎么办?

    他可以在临时表中“插入”数据(比完全更新更快),向用户显示“谢谢”视图,并在当天晚些时候以他选择的时间间隔批量更新主表,即每 6 小时一次,就像预定的脚本一样,当“主表”中的每条记录更新时,临时表中的记录会被删除。

    所有这些都在后台发生,不会延迟用户体验。

    1. $this->_save_in_temp_table($alertDetail, $alertID, $alertUserId, $email, $alert_url, $statusImage, $userStatus);
    2. 向用户显示“谢谢”视图。
    3. 自动/手动运行调度程序以更新上述 (1) 中的数据。更新成功后从“临时表”中删除数据。
    4. 这样,用户不必等待很长时间,因为插入比更新快。

    【讨论】:

    • hammid 逻辑将起作用,因为不应该加载thankyou 视图文件,除非上述一切正常
    • 您假设 1) 无论如何都会发生更新,所以无论如何让我加载“成功”页面。您加载“成功”部分并尝试更新 Ajax 调用中的行。这是一种聪明的方法,但如果 Ajax 调用失败并且客户端仍然显示“成功”页面并假设一切顺利,该怎么办。稍后查看数据库时,您会发现无法预测的异常情况。
    【解决方案2】:

    假设您在控制器中有两个功能。

    function loadPage(){
    

    function showSuccesful(){
    

    loadPage() 用于向客户显示非常慢的视图。 在您的 viewfile.html 中,您可以在控制器中使用 Ajax function 调用 showSuccesful 来表示页面已加载!!成功。

    您可以在脚本标签中的$(document).ready() 中调用Ajax function

    希望你能理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多