我正在创建一个处理一些图像的小插件。现在,为了向用户报告进度,我有一个小的 ajax 脚本,可以长时间轮询结果。
现在实习生我需要一个对象来跟踪处理的内容。现在我知道的选项如下。
使用 PHP session 对象。我不能在这种特定情况下使用它,因为初始过程也是由 ajax 完成的。所以主进程是一个ajax调用,long poll ajax是另一个ajax调用。他们有 2 个不同的 session ID,因此他们无法很好地沟通。
第二种选择是使用数据库作为存储。我不知道这是否很好,因为平均每项工作会有大约 40 次读/写。我知道这没问题,但对于如此简单的事情来说似乎有点过分了。
如果可能的话,我实际寻找的是一种内存对象。在内存中创建一个小对象,随着进度快速更新并在我们完成后删除。
我不知道这是否可能,在 PHP 中存在这样的东西,我可以利用它吗?请注意,这将是一个公共(public)插件,因此我需要使用在所有类型的系统上都可用的方法,没有什么特别的。
最佳答案
我认为数据库并不是最糟糕的解决方案。如果您认为写入磁盘,可能会更糟。
Memcache 很好,但是你需要一个“external plugins free”的小插件,可以轻松运行在 win、linux、mac 等平台上……不是一个好的选择。
如果您使用 Mysql,您可以使用内存引擎表,速度很快,并使用简单的垃圾收集器算法定期截断或清理它。如果内存表不是一个选项,innodb 就足够了。
关于php - 我可以使用什么在 PHP 中进行快速临时存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371168/