2017-08-11 17 views
0

我想建立一個跟蹤系統,在Android應用程序中使用Laravel將GPS數據發送到Web服務器。我已經閱讀了關於如何執行實時應用程序的教程,但就我的理解而言,大多數指南僅實時接收數據。我還沒有看到每秒鐘發送數據的例子。每秒向Laravel發送數據是否正確?

我想這不是一個好的做法,特別是當你已經有一千個用戶時,每秒都會向Web服務器發送數據。我希望任何人都可以建議如何或應該如何做到這一點?

此外,儘可能多的我只想使用沒有任何NodeJS服務器的Laravel。

+0

取決於多少用戶等等。Nginx在處理大量的併發連接方面非常好,但是真的很難知道,因爲有太多的變量。您可能會考慮使用壓力測試器來查看在遇到服務器性能下降之前可以擁有多少併發連接。 – Ohgodwhy

+0

我認爲你可以使用消防基地,你可以從前端連接而不是使用laravel。儘管它曾經https://firebase.google.com/docs/database/它可能對您有所幫助。 –

+0

@VenkatLokeswar感謝您的建議。如果可以的話,我也會選擇Firebase,但是我需要將MySQL用於其數據庫,這就是爲什麼我決定在Laravel中使用它的原因。 –

回答

0

有至少2個你應該考慮真正重要的東西:

  • 客戶機的互聯網消費
  • 服務器容量

如果你有一千個用戶,每秒將意味着很多的服務器處理請求。

您應該考慮使用一些推技術,如在此@Dipin answer描述:

而且,當涉及到服務器,你應該考慮使用隊列系統來處理這些工作。 Like described in this article可能有一些軟件包提供集成以使用Firebase或GCM爲您處理。

祝你好運,希望它有助於O/

+0

推送或GCM是發送數據到設備,而不是服務器 –

1

快做吧

發送首先,你應該估計服務器容量。從fpm開始,如果您有32個php進程,並且每個post請求在0.01秒內由服務器處理,則容量可以大致估計爲每秒N = 32/0.01 = 3200個請求。

所以只要處理得很快。如果您的請求處理時間爲0.1秒,則在單臺服務器上擁有大量客戶端的速度太慢。啓用opcache,它可以減少5倍的時間。將數據插入到mysql是一個緩慢的操作,所以你可能需要解決它以使其更快。比方說,將它添加到快速緩存(redis \ memcached)中,並且當緩存已包含1000個元素或緩存創建時間超過0.5秒時,請將其作爲單個插入查詢移動到數據庫中。

待辦事項發送隨機

大多數的智能手機可能有正確的時間。因此,當下一秒開始時,它可能會導致數千個同時發生的請求。所以,第一個0.01秒服務器將處理1000個請求,接下來0.99秒它將會休眠。在移動代碼中插入一個0-0.9秒的隨機延遲,這對每個設備都是固定的,並且在第一次安裝或請求時定義。它將統一加載服務器。

+0

感謝這非常豐富的答案。也許我會試試這個,學習redis或memcached。 –

相關問題