【发布时间】:2018-03-09 02:38:19
【问题描述】:
我在 Codeigniter(PHP 框架)中工作。在我的网站中,我列出了大约 10,00,000 条记录的“用户列表”。我应用了分页,每页限制为 10 条记录。当我加载网页时,我得到关注错误“致命错误:允许的内存大小为 134217728 字节已用尽”。我找到了设置“ini_set('Memory_limit','-1');”的解决方案在我的控制器中或在 php.ini 文件中配置。但现在问题是在配置“ini_set('Memory_limit','-1');”之后在我的控制器中,从服务器获取数据的响应时间太晚了。
我创建了动态查询来获取用户数据。如下所示:
SELECT DISTINCT (SELECT user_id from tbl_login_track WHERE user_id=U.user_id ORDER BY created_date desc LIMIT 1) as user,(SELECT created_date from tbl_login_track WHERE user_id=U.user_id ORDER BY created_date desc LIMIT 1) as user_login_date,DATEDIFF(CURRENT_TIMESTAMP,(SELECT created_date from tbl_login_track WHERE user_id=U.user_id ORDER BY created_date desc LIMIT 1)) as last_login,PP.product_plan_name , U.*,(SELECT COUNT(*) FROM tbl_product WHERE user_id = U.user_id) AS product_post_count FROM tbl_user as U JOIN tbl_product_plan as PP ON U.product_plan_id=PP.product_plan_id LEFT JOIN tbl_login_track as LT ON U.user_id=LT.user_id limit 0,10
必填:希望减少查询结果时间。
提前致谢。
【问题讨论】:
-
允许无限内存永远不是解决方案。您的分页 sql 中一定有错误,因为 10 条记录限制永远不会导致内存耗尽。您需要找到内存泄漏。没有任何代码,它是在黑暗中的镜头。
-
我检查了我的查询。这没有问题。并且“需要查找内存泄漏”是什么意思?
-
您需要找出为什么在获取 10 条记录时会耗尽字节...这不正常。
-
如果您发布您的代码,您实际上可能有机会帮助您。
-
您输出的第一个错误是关于内存的 PHP 错误。这很可能与代码有关。 2,为了改进您的查询,我们需要查看架构。查询可以简化或者表可能缺少关系,没有办法知道
标签: php codeigniter