我想知道如何在后台运行sql查询...我有一个很大的查询,花了这么多时间我想把它作为背景运行,这样我的页面加载时间会少一些..
答案 0 :(得分:3)
使用cron在PHP脚本中运行查询并缓存结果。
答案 1 :(得分:3)
您可以使用AJAX在单独的脚本中调用您的查询。当请求页面时,正常处理PHP,渲染并将页面发送给访问者,并立即启动AJAX脚本,请求执行慢速查询的另一个PHP脚本。查询运行时将加载页面,当您从查询中获得结果时,请使用一些JavaScript来合并结果。这里的好处是,当页面加载时,查询正在运行,因此您同时执行这两项操作。
另请参阅优化查询并确保已在表上设置索引以加快查询速度。
答案 2 :(得分: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");
答案 3 :(得分:2)
我建议使用CRON和Cache方法,或者实现AJAX的使用。
使用CRON和Cache,运行查询,然后对其进行序列化并将其保存到文件中以保持理智。在需要时调用和反序列化。
使用AJAX,当您的页面加载时,调用一个执行并返回查询的文件。这样,您可以在服务器运行查询时显示等待指示符,并且它们彼此分开。
答案 4 :(得分:0)
将查询写入PHP文件,并在要运行它的时间或时间间隔进行安排。对于Linux计划CRON或Windows使用Task Scheduler否则您可以通过Ajax请求
触发它