我想知道我们如何在后台运行 sql 查询...我有一个大查询需要花费很多时间我想将其作为后台运行,这样我的页面加载时间会更少..
5 回答
您可以使用 AJAX 在单独的脚本中调用您的查询。当页面被请求时,正常处理 PHP,呈现页面并将其发送给访问者,然后立即启动 AJAX 脚本,请求另一个执行慢查询的 PHP 脚本。该页面将在查询运行时加载,当您从查询中获取结果时,使用一点 JavaScript 来合并结果。这里的好处是,当页面加载时,查询正在运行,所以你同时做这两个。
还要考虑优化您的查询并确保您已在表上设置索引以加快查询速度。
使用 cron 在 PHP 脚本中运行查询并缓存结果。
这里有一些解决方案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");
我建议使用 CRON 和 Cache 方法,或者实现使用 AJAX。
使用 CRON 和缓存,运行您的查询,然后将其序列化并将其保存到一个文件中以确保完整性。需要时调用和反序列化。
使用 AJAX,当您的页面加载时,调用执行并返回查询的文件。这样,您可以在服务器运行查询时显示等待指示器,并且它们彼此分开。
在您的 PHP 文件中编写查询,并在您想要运行它的时间或时间间隔安排它。对于 linux 调度CRON或 Windows 使用Task Scheduler Else 您可以通过Ajax请求触发它