Php Laravel 5.3从ajax加载数据(大量数据)
您好,我正在制作一个管理员面板来控制我的vps和专用服务器,所以我有很多数据,例如Cpu使用率、内存使用率、磁盘存储使用率、负载等,我使用这个进度条,如下所示:Php Laravel 5.3从ajax加载数据(大量数据),php,ajax,laravel,Php,Ajax,Laravel,您好,我正在制作一个管理员面板来控制我的vps和专用服务器,所以我有很多数据,例如Cpu使用率、内存使用率、磁盘存储使用率、负载等,我使用这个进度条,如下所示: <li class="content"> <span>Cpu usage </span> <div class="progress progress-mini progress-danger active progress-striped"> <div sty
<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>
$(function () {
$.ajax({
url: '/ajax/cpuUsage',
type: "GET",
success: function (data) {
console.log(data);
// do some logic here...
}
});
});
Route::get('/ajax/cpuUsage', 'UsageController@index');
但是当我的页面上有10个浏览者时,这条路线会被调用10次,我每f.e 5秒有10个请求,这是一个很小的数量,但当我有1k浏览者时,这条路线可能会被杀死。所以我想缓存数据,但laravel缓存了1分钟,我该怎么做?对我的英语很抱歉,但我想你可以理解我说的:)你可以像这样使用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>
$(function () {
$.ajax({
url: '/ajax/cpuUsage',
type: "GET",
success: function (data) {
console.log(data);
// do some logic here...
}
});
});
Route::get('/ajax/cpuUsage', 'UsageController@index');
您可能应该移动逻辑以将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)
{
//
}
}
这只是需要有人确认的想法,但我认为nginx而不是apache应该是有帮助的(我认为您有apache)。另一件事是使用节点js。。。我怀疑PHP是否适合这里bestCaching在这里没有意义,因为像这样的“使用率”统计数据是要显示在实时数据中的。是的,但我想缓存5秒钟,所以我可以调用这个实时数据,我不能在页面上每1个用户发出1个请求,我能做什么?你应该使用post,而不是get。。。因为get URL太长,会让你的服务器呕吐。你可以使用
session
来存储数据:是的,我知道,但是当我调用/ajax/cpuUsage时,我在路由中的函数会进行查询,所以如果我在f.e 1k vievers页上有,这个函数被调用1k次是正确的吗?如果是正确的,那么是对我的数据库多/我不认为你真的需要担心那件事。但是,您可以缓存查询$users=DB::table('cpuUsage')->记住(3)->get();这样你的数据库就不会被淹没。我相信如果你有一千个用户,你的查询会每3分钟运行一次,或者你设定的任何时间。如果他们不断地从那个路径获取数据。好的,我发现我可以把缓存放在memory float中,所以我做:$time=cache::memory('key',0.08,function(){return Carbon::now()->second;});这个5秒的缓存$time对我来说很好,我想我会用这个来做这个查询:)但是谢谢你的帮助:)