5

我想知道我们如何在后台运行 sql 查询...我有一个大查询需要花费很多时间我想将其作为后台运行,这样我的页面加载时间会更少..

4

5 回答 5

3

您可以使用 AJAX 在单独的脚本中调用您的查询。当页面被请求时,正常处理 PHP,呈现页面并将其发送给访问者,然后立即启动 AJAX 脚本,请求另一个执行慢查询的 PHP 脚本。该页面将在查询运行时加载,当您从查询中获取结果时,使用一点 JavaScript 来合并结果。这里的好处是,当页面加载时,查询正在运行,所以你同时做这两个。

还要考虑优化您的查询并确保您已在表上设置索引以加快查询速度。

于 2012-07-11T12:41:35.103 回答
3

使用 cron 在 PHP 脚本中运行查询并缓存结果。

于 2012-07-11T12:36:06.440 回答
2

这里有一些解决方案http://dev.mysql.com/doc/refman/5.0/en/table-locking.html和这里http://dev.mysql.com/doc/refman/5.5/en/insert.html

mySQL 官方网站说:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...

所以一个真正的用例看起来像

INSERT LOW_PRIORITY INTO tablename (column1,column2) VALUES ("hello","you");
于 2012-07-11T12:39:58.967 回答
2

我建议使用 CRON 和 Cache 方法,或者实现使用 AJAX。

使用 CRON 和缓存,运行您的查询,然后将其序列化并将其保存到一个文件中以确保完整性。需要时调用和反序列化。

使用 AJAX,当您的页面加载时,调用执行并返回查询的文件。这样,您可以在服务器运行查询时显示等待指示器,并且它们彼此分开。

于 2012-07-11T12:40:55.010 回答
0

在您的 PHP 文件中编写查询,并在您想要运行它的时间或时间间隔安排它。对于 linux 调度CRON或 Windows 使用Task Scheduler Else 您可以通过Ajax请求触发它

于 2012-07-11T12:45:33.807 回答