长期运行的Magento进程


Long-Running Magento Process

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

因此,如果一个Magento PHP进程被启动并维护在内存中,等待API请求,这样它就可以处理它们,而不需要每次都加载Magento。

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

更新:更具体地说,我的需求:

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

您可能想要研究proc-open,并且需要进行许多通常发生在操作系统本身的管理。

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

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

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

  • http://www.php-code.net/2010/05/running-multiple-processes-in-php/

  • http://www.php.net/manual/en/function.proc-open.php

  • PHP proc_open是否阻止Web请求?