2012-08-27 109 views
1

任何人有任何的經驗。例如,一個典型的Magento API調用的命令或客戶資源可能需要1秒或更多,與當時可能一半花在了Magento的開銷,而不是具體到有問題的API資源。長時間運行Magento的過程中使用長時間運行Magento的過程,以減輕開銷

所以,如果有什麼Magento的PHP程序進行紡絲並保持在內存中,等待API請求,以便它可以無需每次都加載了Magento的處理它們。

我對長時間運行的PHP腳本的大多數搜索都提出了有關解決PHP腳本問題的問題,這些腳本花費的時間比預期的要長,因爲它們正在處理的數據量等等。如果甚至有可能,我發現很難找到有關這種事情的好資源。

更新:更具體一點與我的需求:

  • 我已經到位memcached的簡單獲取我們可以放心地緩存服務器端。
  • ,我想它的寫操作現在來優化。
  • 使用REST API,所以沒有任何WSDL負載,我們是關心的。
+2

對潛在內存泄漏的高度警惕將是非常重要的...... – Roscius

+2

通常,您必須在PHP中實現Web服務器(我確信有很多實現),引導Magento,然後爲進程每個請求。有很多內存/資源管理需要考慮。 APC和memcache經常用作模仿行爲的機制。您可能正在尋找符合應用範圍的東西(例如在Java/.NET應用服務器中)。 – beeplogic

+0

感謝@beeplogic。任何指向APC/memcache基準的鏈接?我們已經在使用memcache進行API響應,可以完全緩存(主要是GET),但對於POST,我們並未使用它。我將進一步研究APC。就memcache而言,我們實際上是否可以緩存一個magento模型,然後從memcache中的獨立PHP文件中加載它,而不需要任何magento加載開銷並使用它?這似乎不可能,但真棒。 – kalenjordan

回答

1

你可能想看看proc-open,你需要做很多管理工作,通常是在操作系統本身。然而,如果問題是速度問題,而不是僅僅想要一個方法來使用pipe/fork來利用可用的硬件,那麼我會考慮簡單地找出整個系統的瓶頸,並且在潛入之前進行緩存。如WSDL緩存,數據庫標準化,OP代碼緩存或甚至是內存緩存或反向代理緩存。 Alan在他的Mercury API產品中有WSDL高速緩存(http://store.pulsestorm.net/products/mercury-api

在使用Magento的32位內核系統時,我通過Magento的模型(堆棧)超過8小時使用這種相同的方法。一個php文件中擔任基礎的數據塊被分叉出來的是沒有實際進口次要PHP文件的主要切入點和新工藝。

我確實利用這個小腳本對我提到的導入進行了多線程處理,雖然這不是對您的問題的確切答案,因爲它似乎並不具有技術上的特定導向性,但希望提供一些有關可能性:

+0

謝謝@Boomer!所以,我最近已經閱讀了最近有關Alan的WSDL緩存收益 - 相當激烈 - 但我們實際上使用了一個REST API,因此不確定這將適用於我們。數據庫規範化 - 是否有很多可以完成的事情,因爲Magento本身對現有的數據庫結構有相當大的影響?我們創建的自定義表格非常少。 OP代碼緩存 - 將檢查出來。 Memcache /反向代理 - 我們已經對簡單的GET進行了適當的處理,以便我們可以緩存服務器端,但是這是我們想要關注的更多內容。 – kalenjordan

+0

你可能想看看插入緩衝:http://dev.mysql.com/doc/refman/5.0/en/innodb-insert-buffering.html – B00MER