2016-03-23 9 views
0

私はcronジョブを設定し、ftp経由でアップロード/更新する特定の.csvファイルからスケジュールされたインポートを行います。コンソールからX-Cart 5の.csvファイルをインポートする

linux consoleコマンドを使用して、X-Cart 5用の製品インポートを簡単に設定する方法があるのだろうか?

+0

異なるディストリビューションでは、異なるレジスタを使用してcronジョブを呼び出します。この質問にはかなりの重要なデータがありません。 – Xorifelse

答えて

0

Linuxコンソールからインポートを行うデフォルトの方法はありません。しかし、単純なコンソールスクリプトを作成し、cron経由で実行することができます。コードの

例(概念のみではなく、あなたのケースのためのソリューション):

#!/usr/bin/env php 
<?php 

if ('cli' != PHP_SAPI) { 
    exit (1); 
} 

require_once __DIR__ . DIRECTORY_SEPARATOR . 'top.inc.php'; 

XLite::getInstance()->run(true); 

// Initialize importer 
// See all possible options in classes/XLite/Logic/Import/Importer.php __construct() 
$importer = new \XLite\Logic\Import\Importer(
    array(
     'warningsAccepted'  => true, 
     'delimiter'    => ',', 
     'ignoreFileChecking' => true, 
     'files'     => array(
      '/full/path/to/xcart/var/import/products.csv', 
      '/full/path/to/xcart/var/import/categories.csv' 
     ) 
    ) 
); 

// Verifiaction step 
while ($importer->getStep()->valid()) { 
    $importer->getStep()->current()->process(); 
    $importer->getStep()->next(); 
} 

// Check warnings & errors after verification and save to log file 
if($importer->hasWarnings()) { 
    $warnings = \XLite\Core\Database::getRepo('XLite\Model\ImportLog') 
     ->findBy(array('type' => \XLite\Model\ImportLog::TYPE_WARNING)); 

    \XLite\Logger::logCustom('import_warnings', var_export($warnings, true)); 

    //Clear warning messages 
    \XLite\Core\Database::getRepo('XLite\Model\ImportLog') 
     ->deleteByType(\XLite\Model\ImportLog::TYPE_WARNING); 
} 

if($importer->hasErrors()) { 
    $errors = \XLite\Core\Database::getRepo('XLite\Model\ImportLog') 
     ->findBy(array('type' => \XLite\Model\ImportLog::TYPE_ERROR)); 

    \XLite\Logger::logCustom('import_errors', var_export($errors, true)); 
} 

// Import/proccess quick data for products/resize images 
// This loop wont'b executed if ($importer->hasWarnings() == true && warningsAccepted == false) 
// or ($importer->hasErrors() == true) 
while ($importer->isNextStepAllowed()) { 
    $importer->getOptions()->step = $importer->getOptions()->step + 1; 
    $importer->getOptions()->position = 0; 

    while ($importer->getStep()->valid()) { 
     $importer->getStep()->current()->process(); 
     $importer->getStep()->next(); 
    } 
} 

また、あなたがそれを使用するにはX-カート5にスケジュールされたタスクを使用することができますが、クラスの魔女を使用して独自のモジュールを作成する必要があります抽象クラスクラス/ XLite /コア/タスク/ベース/ Periodic.phpは、ファイルクラス/ XLite /モジュール/ CDEV/XMLSitemap /コア/タスク/ GenerateSitemap.php

実行中のコードの例を見つけることができます

拡張しますX-Cart 5に登録されたタスク:php console.php --target = cron

関連する問題