【发布时间】:2011-12-03 21:24:06
【问题描述】:
我正在创建一个处理一些图像的小插件。现在要向用户报告进度,我有一个小的 ajax 脚本,它将长轮询结果。
现在实习生我需要一个对象来跟踪处理的内容。现在我知道的选项如下。
使用 PHP 会话 对象。在这种特定情况下我不能使用它,因为初始过程也是由 ajax 完成的。所以主进程是一个ajax调用,而long poll ajax是另一个ajax调用。他们有 2 个不同的会话 id,所以他们不能很好地交流。
第二种选择是使用数据库作为存储。我不知道这是否很好,因为平均工作中大约有 40 次读/写。我知道这没问题,但对于这么简单的事情来说似乎有点过分。
如果可能的话,我实际寻找的是一种内存对象。在内存中创建一个小对象,它会随着进度快速更新并在我们完成后删除。
我不知道这是否可能,PHP中存在这样的东西,我可以利用它。请注意,这将是一个公共插件,因此我需要使用在所有类型的系统上都可用的方法,没什么特别的。
【问题讨论】:
-
可能是Memcached?我也没有关注你的会话问题。
-
使用 cookie(它将保存在客户端计算机本地)
-
@JaredFarrish 会话保存在服务器上,读取和写入它们需要很长时间
-
@micha - 哦,我明白了,这是一个会话超时问题。 Cookies 可能是一个不错的选择,或者是一个临时表。也许是 LocalStorage?
-
会话的问题是我得到了 2 个不同的会话 ID。我花了一个小时才弄清楚,我也没有意识到这个问题,但是会话不起作用。我猜两个 ajax 调用会生成 2 个不同的会话 ID。再一个 cookie 就太多了。