php中怎么存储对象,在PHP中的请求之间存储对象而无需序列化

我正在用PHP编写一个有状态的Web应用程序,其中该状态可能包含许多对象.目前,我将所有这些对象保留在$_SESSION中,并在请求结束时将它们序列化.这有点痛苦,因为序列化整个会话需要几秒钟,而反序列化则需要更多时间.

我想尝试APC,因为我希望这些对象只是被复制而不是序列化. las,看来,如果我喂apc_store($object)一个对象,则似乎在将其传递给另一个进程之前无论如何都要对其进行序列化. (有故事说原始值和数组无需序列化即可进行内存复制,但这对我来说不是一个合适的解决方案,因为我的会话对象有很多(循环)引用.)

我的问题:是否存在一种已知的方法来保持对象在PHP中的持久性,而不必在每次请求后都将其序列化?我听说有传言说HipHop解释器可以解决这个问题,但是我在网上找不到任何有效的示例.有人可以告诉我PHP是否有可能吗?

(我知道,我应该用Java或其他支持无TCP连接的持久实例的语言编写该项目)

解决方法:

每当您需要存储(冻结)对象时,都需要对其进行序列化.这与存储(APC,会话文件,数据库等)无关,这是因为脚本进程将终止,并且下次启动时,对象需要重新恢复生命.

所以事情不能保持在“运行状态”,对象将总是被序列化存储.

众所周知,PHP序列化并不是最快的.您可以使用其他替代实现,例如igbinary PHP extension.它在透明会话处理旁边提供了序列化/反序列化功能.也许这实际上对您的情况很有帮助.

无论如何:在会话中存储的内容越多,在请求开始时解冻或唤醒所需的时间越多,花费的时间就越多.

标签:persistent-storage,serialization,php,state

来源: https://codeday.me/bug/20191208/2089041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值