我想每1分钟在我的项目中查询一个mysql表。我使用javascript setInterval 方法进行计时,使用ajax发送请求并接收输出为html。但它有很多问题: 1-整个网站只为执行此操作而变得非常缓慢。 2-这样我就无法从数据库中查询其他内容。 我的代码是:
function ajaxGetAllOrders(){
$.ajax('<?php echo url()?>/admin/getAllOrders',{
dataType:'json',
async: true,
success:function(data){
$('#page-content').html(data.content);
}
});
}
和区间方法:
$(function(){
setInterval('ajaxGetAllOrders();',60000);
ajaxGetAllOrders();
});
我尝试为此创建另一个与数据库的连接,但无论如何它都不会有用。
和php getAllOrders方法:
public function getAllOrders(){
if (!$this->isAdmin()){
return;
}
$fields = DB::connection('mysql2')->table('z_orders')->orderBy('id','desc')->get();
$nFields = DB::connection('mysql2')->table('z_food_orders')->orderBy('id','desc')->get();
$count=0;
$i=1;
if (count($fields)>0){
foreach($fields as $field){
$userid = DB::connection('mysql2')->table('z_users')->whereId($field->user_id)->first();
$data['username']=$userid->name;
$data['address'] = $userid->address;
$orderId = DB::connection('mysql2')->table('z_food_orders')->whereOrderId($field->id)->first();
$foodId = DB::connection('mysql2')->table('z_foods')->whereId($orderId->food_id)->first();
$data['foodname'] =$foodId->title;
$data['foodcount'] = $orderId->foodcount;
$foodPrice = $foodId->price;
$count += $foodPrice * $orderId->foodcount;
$i++;
}
$cid = DB::connection('mysql2')->table('z_users')->whereId($userid->id)->first();
$data['customer_id'] = $cid->cctt;
$data['price']=$count;
$data['fields']=$nFields;
}
return response()->json(['content'=>view('admin.orders',$data)->render()]);
}
这背后的整个想法是用户订单的东西。然后在管理面板的订单部分管理员可以看到所有订单。所以我希望管理员能够重新加载页面,并且每分钟订单列表都会显示新订单。