我目前使用以下HighCharts:HighStock:圖表:http://www.highcharts.com/stock/demo/data-grouping爲了顯示從服務器返回的數據。巨大的數據和PHP錯誤
我們從MySQL數據庫中檢索數據,真的很大。我們每隔1秒就存儲一次傳感器指標。一段時間後,我們得到了以下錯誤:
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4756882 bytes) in C:\\wamp\\www\\admin\\getTrends.php on line 156, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP 1. {main}() C:\\wamp\\www\\admin\\getTrends.php:0, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP 2. getTrendsDataAI() C:\\wamp\\www\\admin\\getTrends.php:33, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP 3. printResults() C:\\wamp\\www\\admin\\getTrends.php:102, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP 4. createData() C:\\wamp\\www\\admin\\getTrends.php:230, referer: http://localhost/admin/trends.php
[Wed Sep 12 00:15:56 2012] [error] [client 127.0.0.1] PHP 5. implode() C:\\wamp\\www\\admin\\getTrends.php:156, referer: http://localhost/admin/trends.php
什麼是這個數據作爲JSON對象返回HighStocks觀看的最佳解決方案?我們如何才能克服PHP的限制?我們每次都要返回大塊數據嗎?他們通常如何向用戶提供大量的數據並根據這些數據創建圖表和報告?我們需要克服的另一個大問題是返回的JSON對象是巨大的。此時約爲20-30 mbs,未來將會更大。可以將這些數據返回給用戶並執行所有客戶端?
任何建議或想法的歡迎。
我以前使用過RRD存儲傳感器數據,它運行良好,根據我的經驗,比傳感器數據的MySQL更好。有一個PECL擴展與RRD交互。 RRD還會在您可以設置的點上修剪數據,因此在一個月之後,而不是每秒都有數據,它會用每分鐘的平均值代替那些數據,或者您想要配置它。 RRDTool:http://oss.oetiker.ch/rrdtool/ 擴展:http://php.net/manual/en/book.rrd.php –
我會盡量減少你的數據點的數量發送。例如。如果您每小時發送100,000個數據點,請嘗試發送每日數據點(大約4200個)。 –
但是,如果精度是一個關鍵的要求呢? – glarkou