在Ajax请求之间是否丢失了PHP对象?

时间:2012-06-29 00:12:35

标签: php ajax

在过去的几个月里,我一直在使用Ajax用于纯粹的用户体验,即允许用户提交表单,访问内容等,而无需重新加载或离开页面。但是,在阅读了一篇关于使用Node.js的好处的文章后,我开始考虑更多关于我的应用程序是否可以从向服务器提交微请求中受益,而不是例如从巨型表单提交数据马上。

现在,我的应用程序的工作方式是我的DomainObjects映射非常直接映射到我的数据库表以及视图层中的表单。所以,例如,

class Demographics extends DomainObject {

    protected $first;
    protected $last;
    protected $middle;
    protected $ssn;

    // getter, setter methods


}

将包含一个表单,其中包含用于更新的所有可设置属性的输入。因此,到目前为止,我们有一个Demographics对象,用于保存数据库中人员的信息。好吧,目前,当用户更新此人的信息时,人口统计信息对象使用页面中的数据重新创建(我将客户ID隐藏在HTML中并使用它来重新实例化对象) ,但现在我想知道这是否是1.必要和2.良好实践。

所以,我的主要问题是:如果我决定通过Ajax提交微请求,我是否真的需要重新实例化对象,或者是否有某种“线程”让我的PHP保持活跃要求? (即先前实例化的对象是否可访问?)。

此外,这种做法是重新创建DomainObject并在HTML常规实践中隐藏行的ID,还是应该避免这种做法?

2 个答案:

答案 0 :(得分:3)

每个请求周期都是它自己的线程,就像它应该的那样。您不希望有多个不同的用户共享相同的数据。这看起来是应该存储在数据库中并在每个请求中检索的数据的完美示例。但是,您的微Ajax请求方法听起来不是一个好主意;每个请求都可以与数据库中的不同表进行通信,并且可能完全与不同的URL进行通信,并且每次在数据库中都会存储和重新创建进度。

至于你的第二个问题,我需要看一些代码来了解你想要完成的任务。

答案 1 :(得分:1)

必须以某种方式手动保留数据。处理后续请求的相同的线程/进程应该依赖,除非特定框架专门围绕此类保证设计并且可以确保它们不是侵犯。

究竟如何持久/恢复数据......取决于您和要求; - )

  1. 查看状态; 通过回发数据维护状态。这没有什么本质上的错误(它是ASP.NET中ViewState的基础),但是维护状态越大,必须来回传输的数据越多(几KB就没什么了,几MB就是......不需要对于)。 如果使用,请考虑防篡改解决方案。 驱动数据流程时效果很好。
  2. 数据库; ,例如MySQL的。保持数据的好方法。但是,并非所有数据都需要这种持久性。它通常很容易设置和维护。
  3. 缓存; 例如。 memcached的。不是RDMB。但是存储数据的一种好方法“它很高兴”。经常坐在“数据库支持的数据前”。
  4. Cookie; 通常与上述一项或多项结合使用,以“关联”不同的连接。有时它是存储/传递额外瞬态数据的可行方法。
  5. 会话状态; 通常使用#2或#3(并使用#4)。与View State的区别在于它“仅在服务器上”。
  6. 序列化; 可用于脱水/再水化对象而无需手动构建。与上述方法一起使用可以简化生活。
  7. 快乐的编码。