2016-10-19 254 views
0

我試圖開發一個API來將來自多個應用程序的警報存儲到數據庫中。我正在用Laravel開發api。Laravel API速度(太慢)

我做了一個C程序,它向API發出了多個post請求,以查看laravel api可以處理多少個請求。

我在api.php以下航線

Route::post('/alarm', 'Api\v1\[email protected]'); 

在我的控制我所做的存儲功能存儲在POST請求接到報警值到數據庫

function store(Request $request) 
    { 

     $content = $request->getContent(); 

     $json_content = json_decode($content); 

     $id = $this->alarm_model->newAlarm($json_content); 

     echo '{ "result": '.$id.', "msg":'.$content.' }'; 

    } 

然後我有一個鬧鐘模型,它將json值存儲在數據庫警報表中。

如果我提出了1000個請求,它無法處理所有這些請求。我得到HttpSendRequest錯誤:12002 Internet Timeout

我做錯了什麼?每秒多少次請求允許Laravel框架?

回答

0

沒有限制,據我所知,這一切都取決於你的環境,如果它是一個小型服務器,我懷疑它將能夠處理每秒1000個請求。

你可以做的反而是利用Laravel Queues

什麼,我認爲正在發生的事情對你到底是什麼人你的服務器試圖一次完成1000個請求時變得太忙。這會導致服務器響應「我很忙」信號。

但是通過排隊,您可以限制服務器上的壓力,並在幾分鐘內使其發生?

如何:

  1. 創建工作php artisan make:job ProcessAlarms

  2. 在作業的Handle方法,你把邏輯然後保存報警

  3. 在控制器的store方法使用這dispatch(new ProcessAlarm($data_you_want_to_pass));

+0

事情是,如果我這樣做一個簡單的PHP(發送請求到一個簡單的PHP存儲數據庫中的數據),服務器能夠處理1000請求。 所以我不知道我是否在laravel中做錯了什麼,或者如果laravel讓服務器忙碌。 – aritz

+0

那麼Laravel在它的請求週期中經歷了相當長的一段時間,所以在通過1個php文件進行「簡單」SQL調用,然後遍歷整個應用程序生命週期時,會有很大的區別。 – WebKenth

+0

1000個CPU請求i5-2430 2.4GHz和Win7下8Gb的RAM太多了? – aritz