1

任何人都有使用长期运行的 Magento 进程来减轻开销的经验。例如,对订单或客户资源的典型 Magento API 调用可能需要 1 秒或更长时间,其中可能有一半时间花在 Magento 开销上,而不是特定于所讨论的 API 资源。

那么,如果 Magento PHP 进程在内存中启动并维护,等待 API 请求,这样它就可以处理它们而无需每次都加载 Magento。

我对长时间运行的 php 脚本的大多数搜索都出现了与 PHP 脚本故障排除有关的问题/问题,这些 PHP 脚本的运行时间比预期的要长于运行它们正在处理的数据量的 b/c 等 - 所以我发现如果可能的话,很难在这种事情上找到好的资源。

更新:更具体地满足我的需求:

  • 我已经为简单的 GET 设置了 memcached,我们可以安全地缓存服务器端。
  • 我现在要优化的是写操作。
  • 使用 REST API,所以没有我们关心的任何 WSDL 加载。
4

1 回答 1

1

您可能想要查看proc-open,并且您需要做很多通常发生在操作系统本身中的管理。

但是,如果问题是速度,而不仅仅是想要一种方法来管道/分叉以利用可用的硬件,我会考虑简单地在整个系统中找到瓶颈,并在深入研究之前进行缓存。例如 WSDL 缓存、数据库规范化、OP 代码缓存甚至 memcache 或反向代理缓存。Alan 在他的 Mercury API 产品中确实有 WSDL 缓存 ( http://store.pulsestorm.net/products/mercury-api )

proc-open以前在使用相同的方法在不到 8 小时的时间内将超过 50 万条客户记录(通过我可能添加的 Magento 模型(堆栈))与地址导入到 32 核系统上的 Magento 时使用过。一个 PHP 文件作为主要入口点,基于数据块的新进程被分叉到一个辅助 PHP 文件,该文件进行实际导入。

我确实利用这个小脚本对我提到的导入进行了多线程处理,尽管这不是您问题的确切答案,因为它似乎不是非常面向技术,但希望能提供一些关于可能性的见解:

于 2012-08-27T20:16:53.150 回答