是否可以在PHP中缓存/序列化COM对象?

时间:2010-07-02 08:07:17

标签: php com activex

我有一个大的(ish)COM对象,它作为我的PHP应用程序的后端。每次刷新页面时,PHP都会创建COM接口的新对象。然而这很慢。

有没有办法序列化/缓存COM对象,以便我可以访问已经初始化的对象?或者是否有其他一些解决方法。我还想控制哪个对象属于哪个会话。

这甚至可以使用PHP吗?我甚至准备切换到另一种语言来实现这一点。

3 个答案:

答案 0 :(得分:3)

我非常怀疑这是否可行。 COM对象本质上类似于连接资源,也无法序列化。

想到的唯一想法是让PHP进程不断运行,初始化COM对象,以及与其进行通信的其他PHP进程。使用memcache。但PHP不是为这种持久的操作而构建的 - 不确定它是否能正常运行。

我偶然发现了一个有趣的问题:PHP Daemon/worker environment

关于使用PHP作为后台进程:Is it wise to use PHP for a daemon?

最吸引人的方法可能是使用加载COM对象的其他语言构建守护进程,并通过套接字向PHP进程提供服务。

答案 1 :(得分:0)

不 - com对象存在于PHP内存空间之外 - 你只是PHP中PHP的装饰器对象。

下进行。

答案 2 :(得分:0)

asier解决方案可能是COM代理。 COM代理服务器将向PHP应用程序公开相同的COM接口。每个代理对象都将透明地重定向到底层的原始COM对象。代理的重点是在发布时将繁重的COM对象放回池/缓存中,以便将来可以通过从该池中回收COM对象而不是创建新的代理来快速创建新代理。