使用/ PHP持久化MySQL查询结果

时间:2012-03-23 20:32:59

标签: php mysql

有没有办法使用PHP来保存查询结果,以便您可以使用它再次调用Web服务器?

我知道没有办法在php中保留资源但是寻找另一种方法来实现这个目标:

我有一个报告服务器,一些查询将需要几秒钟并返回10,000的记录(可能是10的MB大小)。我希望能够使用资源mysqli_stmt :: data_seek在用户请求新页面时翻译结果,而不是每次都要求使用限制&偏移

是否有任何技术可以让我这样做?

一些想法是把一个php套接字服务器放在请求通过套接字服务器的查询之间,这可以使资源保持活动,比如5分钟,以获得额外的页面请求。如果资源不再可用,它将运行查询w / a limit&偏移

任何想法或其他想法都将不胜感激!

3 个答案:

答案 0 :(得分:1)

您需要查看memcached

PHP有一个interface

答案 1 :(得分:1)

如果您序列化了数据,则可以使用APCMemcached来保存包含数据的对象/数组。 Memcached将要求您的服务器运行实际的memcached服务器以及安装memcached扩展,而APC除了扩展之外不需要任何特殊的东西。

答案 2 :(得分:1)

您还可以考虑使用PHP的shared memory

一个坏处是它只允许您保存字符串,因此您必须序列化数据。不确定这会对性能产生什么影响,但至少你会写入并从RAM读取,这总是很快。

另一个缺点是,与每个内存操作一样,您需要提前指定要保留的字节数,它不像Memcache那样动态。

您最初可能会保留比您需要的更多(例如20MB而不是10MB),并将当前存储数据的大小存储在前8个字节中。例如。如果您的数据长度为123456字节,则可以将序列化数据存储为“00123456 {serialized data}”,然后通过定义偏移量来读取它:

$size = (int) shmop_read($shmid, 0, 8);
shmop_read($shmid, 8, $size);

另一件需要记住的事情是它只适用于Windows,但如果你有一个不错的服务器后端它应该不是问题:)