私はcronジョブを設定し、ftp経由でアップロード/更新する特定の.csvファイルからスケジュールされたインポートを行います。コンソールからX-Cart 5の.csvファイルをインポートする
linux consoleコマンドを使用して、X-Cart 5用の製品インポートを簡単に設定する方法があるのだろうか?
私はcronジョブを設定し、ftp経由でアップロード/更新する特定の.csvファイルからスケジュールされたインポートを行います。コンソールからX-Cart 5の.csvファイルをインポートする
linux consoleコマンドを使用して、X-Cart 5用の製品インポートを簡単に設定する方法があるのだろうか?
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
異なるディストリビューションでは、異なるレジスタを使用してcronジョブを呼び出します。この質問にはかなりの重要なデータがありません。 – Xorifelse