如何解决我可以在运行SQL查询时让php echo吗?
Liquidweb托管我的网站,如果没有向负载均衡器发送信号,它们将执行严格的30秒超时策略。当我直接访问数据库时,我的SQL查询需要大约34秒的时间来处理。
我的php看起来像这样:
echo " "; //To keep the site alive
$results = $this->db->query($sql); //Takes longer than 30 seconds
echo " "; //To keep the site alive.
Liquidweb不能更改30秒的限制,正在查询的DB是具有成千上万行的成员数据库,并且只会变得更大。
当SQL查询在后台运行时,有没有办法让页面向负载均衡器发送信号?
解决方法
您可以将mysql查询请求发送到dev \ null并将数据存储在文件中吗?然后在35s超时后通过Ajax提取文件
例如
ob_start();
$size = ob_get_length();
header("Content-Encoding: none");
header("Content-Length: {$size}");
header("HTTP/1.1 200 OK");
header("Connection: close");
ob_end_flush();
ob_flush();
flush();
$results = $this->db->query($sql);
$fo = fopen('path_to_file','a+');
fwrite($fo,json_encode($result));
fclose($fo);
超时后,通过AJAX将此文件提取到前端
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。