php – 使用大型数据库时,Ajax请求需要很长时间才能完成
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 使用大型数据库时,Ajax请求需要很长时间才能完成,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1993字,纯文字阅读大概需要3分钟。
内容图文
![php – 使用大型数据库时,Ajax请求需要很长时间才能完成](/upload/InfoBanner/zyjiaocheng/902/f40f160183d34a3f8ce8a3d7758f5261.jpg)
我正在使用Yii框架(版本1.1.14)编写的网站,该网站允许上传和显示新闻.网站的管理员可以选择三个新闻来推广到主页并指定它们的显示顺序.我正在使用Mysql数据库.新闻表有两个字段:isChecked(0或1)和homepagePos(整数)以及其他字段. isChecked字段确定是否选择了新闻以在主页中显示,并且homepagePos字段确定新闻的显示顺序.我使用了jquery的可排序插件来对新闻进行排序.当用户选择要显示的新闻并单击“保存”按钮时,新闻ID将通过ajax发送到php.
将值发送到新闻控制器的javascript部分如下:
$(document).on('click', '#saveToHomepage', function()
{
var url = ajaxRequestSendUrl; //ajaxRequestSendUrl contains url to news controller's promote to homepage method.
$.ajax({
method: "GET",
url: url,
data: {
contentIds: contentIds, //contentIds contains an array of news Ids in certain order
},
success: function() {
// Show success message
},
error: function() {
alert('Some error occured. Please reload the page and try again.');
}
});
});
这是新闻控制器中的主页推广方法:
public function actionHomepage()
{
$allNews = News::model()->findAll();
$value = $_GET['contentIds'];
foreach ($allNews as $news) {
if($news->id == $value[0] ||$news->id == $value[1] ||$news->id == $value[2])
{
$news->isChecked = 1;
$news->homepagePos = array_search($news->id, $value); //Assign index of the array as the position
$news->save();
}
else
{
$news->isChecked = 0;
$news->homepagePos = -1;
$news->save();
}
}
}
我的问题是我的新闻表有超过2k的数据.所以ajax调用需要很长时间(超过一分钟)才能完成.有什么方法可以优化代码,还是有其他方法可以解决这个问题,以减少完成此操作所需的时间?
提前致谢
解决方法:
三个查询:首先将整个表设置为未检查状态,其余为仅在每个选中的行中设置检查状态
public function actionHomepage()
{
$values = $_GET['contentIds'];
$sql = "UPDATE news SET idChecked=0,homepagePos = -1";
Yii::app()->db
->createCommand($sql)
->execute();
for($ii = 0; $ii < 3; $ii++) {
$sql = "UPDATE news SET idChecked = 1,homepagePos = ':homepagePos' WHERE id=:id";
Yii::app()->db
->createCommand($sql)
->bindValues(array(':homepagePos' => array_search($ii, $values), ':id' => $values[$ii]))
->execute();
}
}
内容总结
以上是互联网集市为您收集整理的php – 使用大型数据库时,Ajax请求需要很长时间才能完成全部内容,希望文章能够帮你解决php – 使用大型数据库时,Ajax请求需要很长时间才能完成所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。