gpt4 book ai didi

php - 在不序列化的情况下在PHP中的请求之间存储对象

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:38 24 4
gpt4 key购买 nike

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

我想尝试 APC,因为我希望对象只是被 memcopied,而不是序列化。 las,似乎如果我向 apc_store($object) 提供一个对象,它似乎会在将它传递给另一个进程之前对其进行序列化。 (故事是原始值和数组在没有序列化的情况下被 memcopied,但这对我来说不是一个相关的解决方案,因为我的 session 对象有很多(循环)引用。)

我的问题:是否有一种已知的方法可以在 PHP 中保持对象的持久性,而不必在每次请求后对它们进行序列化?我听说有传言说 HipHop interpreter 可以帮助解决这个问题,但我还没有在网上找到任何有效的例子。有人可以告诉我在 PHP 中是否可行?

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

最佳答案

每当你需要存储(卡住)一个对象时,它就需要被序列化。这与存储(APC、 session 文件、数据库等)无关,这是因为脚本进程将终止,下次启动时,对象需要再次复活。

因此事物不能保持在“运行状态”,对象将始终被序列化以进行存储。

众所周知,PHP 序列化并不是最快的。它有替代实现,您可以使用,例如 igbinary PHP extension 。它在透明 session 处理旁边提供序列化/反序列化功能。也许这实际上对您的场景有帮助。

无论如何:您在 session 中存储的越多,您在请求开始时需要解冻或唤醒的次数就越多,所需的时间就越多。

相关:What is the php_binary serialization handler?

关于php - 在不序列化的情况下在PHP中的请求之间存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com