我正在構建一個Laravel Web應用程序,該應用程序執行一些長時間運行的查詢並利用一對(內部和外部)API。我很難弄清楚爲什麼我無法並行處理請求。爲了闡明我的問題有些輕,在這裏是通過例如我的系統/問題的高度概括:Laravel應用程序不能並行處理請求
- 頁面加載
- 呼籲頁面加載AJAX請求其
GET
「SA BigQuery的結果集(長期運行查詢),清除該數據,並執行它創建的圖像和所述路徑返回到該圖像提供給web應用程序- 長時間運行(〜15秒)
- 威爾最大CPU在執行了Python聚類一個python聚類算法(有時)
- 稱爲AJAX請求其查詢一些信息的外部API,並只顯示它
- 短期運行(約1-2秒)
的問題是,我的AJAX請求沒有被並行處理。第一個被收到,並且在第一個完成之前,web應用程序不會從另一個開始。我已經在Chrome開發工具中檢查了網絡標籤,並且這兩個請求都是並行進行的,但Web服務器並沒有並行處理它們。
我不能確定這是否與PHP,工匠,Laravel的配置錯誤,或者如果我手上有其他問題。我用兩個簡單的路由閉包做了一些測試:一個簡單地返回一個字符串,另一個返回sleep(10)
之後的字符串。當我使用AJAX調用兩者時,即時返回的路由不會返回,直到長時間運行的請求被服務(睡眠後)。
TL; DR:很顯然,這兩個AJAX調用被解僱和並行接收,但我怎麼能有我Laravel的web應用程序並行處理(兼)的要求?
這個網站生產服務器或本地宅基地上?在Apache中有MaxClients配置,您可以查看http://stackoverflow.com/a/1430890/2951316 –
只需使用'php artisan serve'本地運行即可。 –
所以你不是從不同的客戶端測試它?請看看它說「請求會排隊嗎?」的部分。在我提供的最後一個鏈接中。答案說明了您的問題的3個可能的原因。 –