Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用MySQL实现环形缓冲区有什么想法吗_Php_Mysql_Memory_Buffer - Fatal编程技术网

Php 使用MySQL实现环形缓冲区有什么想法吗

Php 使用MySQL实现环形缓冲区有什么想法吗,php,mysql,memory,buffer,Php,Mysql,Memory,Buffer,首先,我打算使用内存存储每个用户的最新用户更新记录。 我是MySQL新手。如何在内存中创建表? 在官方网站上,据说我们可以在创建表时设置ENGINE=MEMORY。但该文件声称,内存中的这些表总是用于读取,而不是用于写入 我根本不知道怎么做 这几天我一直在考虑这个问题。我不能在服务器中安装memcache和任何PHP扩展,因为我没有使用虚拟专用服务器,我能做的只是在httpdocs文件夹中传输脚本和文件。。。我还尝试使用平面文件来存储数据以用作缓冲区/缓存,但我发现由于权限被拒绝,我无法在服务器

首先,我打算使用内存存储每个用户的最新用户更新记录。 我是MySQL新手。如何在内存中创建表? 在官方网站上,据说我们可以在创建表时设置ENGINE=MEMORY。但该文件声称,内存中的这些表总是用于读取,而不是用于写入

我根本不知道怎么做

这几天我一直在考虑这个问题。我不能在服务器中安装memcache和任何PHP扩展,因为我没有使用虚拟专用服务器,我能做的只是在httpdocs文件夹中传输脚本和文件。。。我还尝试使用平面文件来存储数据以用作缓冲区/缓存,但我发现由于权限被拒绝,我无法在服务器的文件目录中写入/创建文件,并且我不允许更改此权限。 使用MySQL缓冲可能是我唯一的选择。希望有人能给我一些提示

多谢各位

p、 我使用运行PHP的Linux Apache服务器,MySQL作为DB。

引擎=内存表可用于读或写


唯一需要注意的是,当服务器崩溃、关闭、重新启动等时,内存表中的所有数据都会消失。正如您对内存表所期望的那样。

您确实应该仔细阅读MySQL的内存引擎。数据存储在RAM中,因此当服务器断电或重新启动时,RAM将被清除,数据将被擦除。内存表应该是MySQL中最快的可访问表类型,但只存储临时数据,没有任何保证

如果我理解正确的话,您正在尝试对PHP生成的某种数据进行静态缓存,不是吗?最简单的方法是将它们作为可靠的文件缓存写入www目录,可以是HTML或JS。如果您不能将目录chmod为可写,那么将它们存储在MySQL中也可以,但前提是这确实有帮助

缓存数据的思想是:减少SQL查询,减少磁盘I/O,减少代码生成。但使用内存表会占用太多内存。将它们存储在一个普通的MyISAM表中也可以,并且可以为您提供大量的后台工作

但是,应该考虑两件事:1、如果访问时缓存不存在;2,如果缓存是最新的


为结果提供某种类型的键应该是一个好主意,因此PHP首先检查缓存的日期,如果不存在,则生成缓存,然后显示,或者直接显示缓存。

你能更好地描述一下你正在尝试做什么吗?实际上我正在为我的iPhone应用程序编写服务器端脚本,此应用程序定期向web服务器发送数据。这些数据将存储在MySQL数据库中,但我也希望每个用户的最新数据(比如说30个数据)保存在内存中,以便浏览器端以更高的速度访问用户的最新数据。如果有足够的用户需要,您将没有足够的内存来按您建议的方式进行扩展。创建一个适当的索引并在普通表上执行此操作。您的意思是,重新启动服务器/服务器崩溃将清空内存中的表,但不会删除它们?@user988988表架构不会与表本身一起存储-因此表定义将被保留,因为它不仅仅存储在内存中。