2013-05-04 63 views
0

誰能告訴我如何自動化magmi在預定的時間執行導入每一天。自動化magmi的方法

我聽說,它可以通過命令行來完成,但不知道如何使用CLI。

請給我有關如何CLI和什麼命令使用自動化進口逐步的過程。

我看到magmi wiki網站不能太瞭解如何使用CLI。

請給我一個關於如何自動化magmi的正確解決方案。

我甚至嘗試使用下面的鏈接,但它現在正

wget "http://user:[email protected]/magmi/web/magmi_run.php?mode=create&profile=default&engine=magmi_productimportengine:Magmi_ProductImportEngine&CSV:filename=/magmitest.csv" -O /dev/null 

回答

2

,我們還可以通過curl命令其由

$url="http://learning.iksuladev.com/satyendra/magmi/web/magmi_run.php?mode=create&profile=satyendra&engine=magmi_productimportengine:Magmi_ProductImportEngine&CSV:filename=../../var/import/sample.csv -O /dev/null"; 

$ch = curl_init($Url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, ''); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch); 
curl_close($ch); 
+0

中有消息'Invalid callback:company_magmi/cron :: magmi_update does not exist'的異常'Mage_Core_Exception'完成相同的只是更改配置文件名稱,模式和文件名,但不工作。你能告訴我,我應該改變哪些是剩下的? – Sarfaraj 2018-01-09 11:05:54

3

如果你可以用系統的cron(CLI版本您的問題)去那麼這裏我使用在一個完整的解決方案我項目(簡化版)。

我將使用公司爲供應商名稱和模塊名稱將是Magmi

第一步是照常安裝magmi。我想你已經安裝了它。

接下來,創建應用程序的/ etc /模塊/ Company_Magmi.xml與以下內容

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Company_Magmi> 
      <active>true</active> 
      <codePool>local</codePool> 
      <version>0.0.1</version> 
     </Company_Magmi> 
    </modules> 
</config> 

然後創建應用程序/代碼/本地/公司/ Magmi /等用以下內容/ config.xml中

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Company_Magmi> 
      <version>0.0.1</version> 
     </Company_Magmi> 
    </modules> 
    <global> 
     <models> 
      <company_magmi> 
       <class>Company_Magmi</class> 
      </company_magmi> 
     </models> 
    </global> 
    <crontab> 
     <jobs> 
      <magmi_update> 
       <schedule> 
        <cron_expr>*/5 * * * *</cron_expr> 
       </schedule> 
       <run> 
        <model>company_magmi/cron::magmiUpdate</model> 
       </run> 
      </magmi_update> 
     </jobs> 
    </crontab> 
</config> 

創建應用程序/代碼/本地/公司/ Magmi/Cron.php與以下內容的文件

<?php 

require_once(dirname(__FILE__) . "/../../../../../magmi/plugins/inc/magmi_datasource.php"); 
require_once(dirname(__FILE__) . "/../../../../../magmi/integration/productimport_datapump.php"); 

class Company_Magmi_Cron { 

    public function magmiUpdate() 
    { 
     $items = array(); // build your own list of items to create/update 

     $this->import($items); 
    } 

    private function import($items, $mode = 'create', $indexes = 'all') 
    { 
     if (count($items) > 0) { 
      $dp = new Magmi_ProductImport_DataPump(); 
      $dp->beginImportSession("PROFILE_NAME", $mode); 
      foreach ($items as $item) { 
       $dp->ingest($item); 
      } 
      $dp->endImportSession(); 
      $this->reindex($indexes); 
     } 
    } 

    private function reindex($string = 'all') 
    { 
     /** @var $indexer Mage_Index_Model_Indexer */ 
     $indexer = Mage::getModel('index/indexer'); 

     $processes = array(); 

     if ($string == 'all') { 
      $processes = $indexer->getProcessesCollection(); 
     } else { 
      $codes = explode(',', $string); 
      foreach ($codes as $code) { 
       $process = $indexer->getProcessByCode(trim($code)); 
       if ($process) { 
        $processes[] = $process; 
       } 
      } 
     } 

     /** @var $process Mage_Index_Model_Process */ 
     foreach ($processes as $process) { 
      $process->reindexEverything(); 
     } 
    } 
} 

的d最後在magmi中將PROFILE_NAME更改爲您的個人資料名稱。

擁有一切,在地方,你將要興建的項目列表創建/更新。這很簡單。這裏有一個例子:

說,你要更新產品的庫存。您可以創建CSV文件是這樣的:

sku,qty 
"SOMESKU","10" 
"SNOTHERSKU","2" 

剛剛建立$項目是這樣的:

$items[] = array(
    "sku" => "SOMESKU", 
    "qty" => "10" 
); 
$items[] = array(
    "sku" => "ANOTHERSKU", 
    "qty" => "2" 
); 

而且不要忘記設置的cron爲Magento的!

你明白了吧?

就是這樣。

+0

但是,我必須專門建立這個數組,每次我執行導入。我已經爲我的客戶創建了這個。他沒有編程思想。 – 2013-05-06 07:12:34

+0

是的,但是在創建CSV文件時你會這樣做。而不是你應該將你的CSV構建邏輯轉換爲創建$ items數組。在我的情況下,我從外部WebService獲取數據。 – sickelap 2013-05-06 07:34:32

+1

我們也可以通過curl命令實現自動化,因爲它很容易 – 2013-06-06 13:39:59

0

添加到上面的回答很容易實現自動化:如果上面required文件不能正常工作,請使用以下文件。

require_once(dirname(__FILE__) . "/../../../../../magmi/inc/magmi_defs.php"); 
require_once(dirname(__FILE__) . "/../../../../../magmi/integration/inc/productimport_datapump.php"); 

它用這些文件爲我工作。

+0

一旦你有更多的聲望,這可能會被添加爲上面的帖子或答案的評論。在此之前,歡迎來到Stackoverflow .... – 2015-07-23 11:42:02