【发布时间】:2012-08-27 16:07:08
【问题描述】:
任何人都有使用长期运行的 Magento 进程来减轻开销的经验。例如,对订单或客户资源的典型 Magento API 调用可能需要 1 秒或更长时间,其中可能有一半时间花在 Magento 开销上,而不是特定于相关 API 资源。
那么,如果 Magento PHP 进程在内存中启动并维护,等待 API 请求,这样它就可以处理它们而无需每次都加载 Magento。
我对长时间运行的 php 脚本的大部分搜索都出现了与 PHP 脚本故障排除相关的问题/问题,这些问题需要比预期更长的时间来运行它们正在处理的数据量的 b/c 等 - 所以我我发现很难找到关于这类事情的好资源,如果可能的话。
更新:更具体地满足我的需求:
- 我已经为简单的 GET 设置了 memcached,我们可以安全地缓存服务器端。
- 我现在要优化的是写操作。
- 使用 REST API,因此无需加载任何我们关心的 WSDL。
【问题讨论】:
-
对潜在的内存泄漏保持高度警惕很重要......
-
通常你必须在 PHP 中实现 web 服务器(我相信那里有很多实现),引导 Magento,然后为每个请求分叉一个进程。需要考虑很多内存/资源管理。 APC 和 memcache 通常用作模仿行为的机制。您可能正在寻找与 Application Scope 类似的东西(例如在 Java/.NET 应用服务器中)。
-
谢谢@beeplogic。任何指向 APC / memcache 基准的链接?我们已经将 memcache 用于可以安全地完全缓存的 API 响应(主要是 GET),但对于 POST,我们没有使用它。我将进一步研究 APC。就 memcache 而言,我们实际上是否可以只缓存一个 magento 模型,然后从 memcache 的独立 PHP 文件中加载它,而不需要任何 magento 加载开销并使用它?这似乎不可能,但很棒。
-
我不知道任何有关性能的链接,但我确信它们就在那里。应该可以将一些对象存储在 APC 中,尽管如果它们有资源或包含某些 XML 对象,它们会抛出错误,因为它们不支持序列化。在这些情况下,您必须重写模型并实现 __serialize/__deserialize 方法来处理这些情况。
标签: php performance magento