Php Laravel 5.3从ajax加载数据(大量数据)

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

您好,我正在制作一个管理员面板来控制我的vps和专用服务器,所以我有很多数据,例如Cpu使用率、内存使用率、磁盘存储使用率、负载等,我使用这个进度条,如下所示:

<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对我来说很好,我想我会用这个来做这个查询:)但是谢谢你的帮助:)