我目前使用以下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