Laravel 5.3从ajax加载数据(很多数据)

问题描述:

你好,我做了一个管理员面板来控制我的vps,专用服务器,所以我有很多数据fe cpu使用情况,内存使用情况,磁盘存储使用情况,负载等我使用这个进度条是这样的:Laravel 5.3从ajax加载数据(很多数据)

<li class="content"> <span>Cpu usage </span> 
    <div class="progress progress-mini progress-danger active progress-striped"> 
     <div style="width: 99%;" class="bar"></div> 
    </div> 
    <span class="percent">87%</span> 
    <div class="stat">Cores: 100</div> 
</li> 

,我想用Ajax加载这个(我知道该怎么做) 但

Route::get('/ajax/cpuUsage',function(){ 
    //mysql query here 
    return response()->json('MyData'); 
}); 

,但是当我有我的第10名观众这条路线将被称为十次,并且我有十个请求每fe 5sec是一个小的ammount,但是当我哈哈有1k观众可以被杀。所以我想缓存数据,但laravel缓存分钟1分钟,我该怎么办?索里对我的英语,但我想你可以undestard我说什么:)

+0

这仅仅是想法,应该有人confir m,但我认为nginx而不是apache应该是有帮助的(我认为你有apache)。另一件事是使用节点js ...我怀疑PHP会适合在这里最好 –

+0

缓存在这里没有意义,因为这样的“使用”统计数据是要显示在实时数据。 – Ohgodwhy

+0

是的,但我想缓存5秒,所以我可以调用这个实时数据,我不能让每个用户1请求页面上,我该怎么办? – lenyAxe

您可以使用Ajax这样的:

$(function() { 
     $.ajax({ 
      url: '/ajax/cpuUsage', 
      type: "GET", 
      success: function (data) { 
       console.log(data); 

       // do some logic here... 

      } 
     }); 
    }); 

你或许应该将你的逻辑CPU使用率数据提取到一个控制器:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class UsageController extends Controller 
{ 




/** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     // logic here 
    return response()->json($mydata); 
    } 

/** 
* Show the form for creating a new resource. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function create() 
{ 
    // 
} 

/** 
* Store a newly created resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function store(Request $request) 
{ 
    // 
} 

/** 
* Display the specified resource. 
* 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function show($id) 
{ 

} 

/** 
* Show the form for editing the specified resource. 
* 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function edit($id) 
{ 
    // 
} 

/** 
* Update the specified resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function update(Request $request, $id) 
{ 
    // 
} 

/** 
* Remove the specified resource from storage. 
* 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function destroy($id) 
{ 
    // 
} 
} 

然后让你的路由/ web.php路线是这样的:

Route::get('/ajax/cpuUsage', '[email protected]'); 
+0

是的,我知道,但是当我打电话/ ajax/cpuUsage,我的路由功能将作出查询,所以如果我已经在页面1k的vievers这个功能被称为1k次是正确的?如果是正确的,那么对于我的数据库是很多的;/ – lenyAxe

+0

我不认为你真的需要担心这一点。但是你可以缓存查询$ users = DB :: table('cpuUsage') - >记住(3) - > get();这样你的数据库就不会被淹没。我相信如果您有一千个用户,您的查询将每三分钟运行一次或您设置的任何内容。如果他们不断从这条路线获取数据。 –

+0

好吧,我发现我可以把缓存记住浮动,所以我让: $ time = Cache :: remember('key',0.08,function(){ 返回Carbon :: now() - > second; }); 和这个缓存美元时间为5秒,所以对我来说是好的我想我会用这个查询:)但谢谢你的帮助:) – lenyAxe