griiv / synchroengine
创建导入和导出命令和代码的集合
Requires
- monolog/monolog: 1.27.1
- symfony/process: 5.0.*
README
Griiv同步模块用于创建通过CSV文件、文本文件、Prestashop API、数据库、REST API等进行的导入和导出流...
它还允许通过多个子任务的并行处理来处理大量数据。
例如,一个包含1,000,000条记录的CSV文件可以通过100个并行运行的子任务进行处理,每个子任务处理10,000条输入数据。
此库使用 symfony/process 库进行并行处理。
可用的Symfony命令
gsynchro:add-export: 创建导出gsynchro:add-import: 创建导入gsynchro:add-sequence: 创建序列gsynchro:create-ftp-folders: 创建FTP文件夹结构gsynchro:execute: 启动导入、导出或序列
特别是用于crontab的用法:php bin/console gsynchro:execute MonImport
一般配置 modules/griivsynchroengine/config/services.yml
gsynchro.importPath: 放置要导入文件的FTP路径gsynchro.importBackup: 存储已导入文件的FTP路径gsynchro.exportPath: 放置用于外部服务的文件的FTP路径gsynchro.exportBackup: 存储已导出文件的FTP路径gsynchro.logsPath: 包含日志的文件夹路径gsynchro.batchSynchro: 子任务的PHP可执行文件路径
创建导入
要创建导入
如果该文件夹不在项目根目录下,首先运行命令 php bin/console gsynchro:create-ftp-folders
运行命令 php bin/console gsynchro:add-import gsynchro Customers
将创建以下文件:_PS_ROOT_DIR_/modules/griivsynchroengine/src/Synchro/Import/CustomersImport.php
请记得在你的模块中运行 composer dumpautoload 以更新自动加载
以下是创建文件的示例内容
namespace Griiv\SynchroEngine\Synchro\Import; use Griiv\SynchroEngine\Synchro\ImportBase; class CustomersImport extends ImportBase { protected function initDataSources() { // TODO: Implement initDataSources() method. } protected function initItemDefinition() { // TODO: Implement initItemDefinition() method. } protected function processRow($dataArray) { // TODO: Implement processRow() method. } }
方法 initDataSources() 用于初始化希望用于导入的数据源(文件、API、数据库请求等)
方法 initItemDefinition() 用于定义数据源的结构,例如,对于CSV文件,这将是要处理文件的列名
方法 processRow() 将被调用来处理数据源的一组数据
还可以为每个导入覆盖以下方法
initLogger() : 允许初始化导入的logger。默认情况下,每个导入的日志文件是针对 SynchroBase::initLogger()
创建导出
数据源
数据目标
内部结构
待办事项
- 为ItemProperty实施验证器
- 实施序列
- 实施日志轮转文件
- 导入后实施gzip文件备份(针对文件)
- 为Prestashop添加挂钩
- 在.backup中实施文件轮转