use Helpers\CSV\CsvSplitter; use Helpers\ProcessLocker; use Keboola\Csv\CsvFile; use Slim\Slim; $app = new Slim(array('mode' => 'development', 'templates.path' => $config['templates_path'])); $app->get('/', function () use($app, $config) { $app->render('page.php', array('csv_files_path' => $config['csv_files_path'], 'log_files_path' => $config['log_files_path'])); }); $app->get('/download_report', function () use($app, $config) { $fileName = $app->request()->params('filename'); echo "<pre>"; echo file_get_contents($config['log_files_path'] . $fileName); }); $app->get('/process/', function () use($app, $config) { $fileName = $app->request()->params('filename'); $locker = new ProcessLocker($config['lock_file']); if (!$locker->isLocked()) { $splitter = new CsvSplitter(new CsvFile($fileName), $config['output_csv_path']); $splitter->split($config['split_size']); $command = $config['nohup_path'] . ' ' . $config['php_path'] . ' ' . __DIR__ . '/src/shell/csv_importer.php ' . $config['output_csv_path'] . ' > /dev/null 2>&1 &'; $process = new Process($command, $config['proc_working_path']); $process->run(); } $app->redirect('/csv_batch_process/index.php'); }); use Helpers\Magento\MageWrapper; use Repositories\Magento\CatalogRepository; use Repositories\Magento\EavCatalogProductRepository; use Processors\Magento\ProductImporter; $app->get('/test/', function () use($app, $config) { ini_set('max_execution_time', -1);
<?php include_once __DIR__ . '/../config/config.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Handler\FirePHPHandler; use Symfony\Component\Process\Process; use Symfony\Component\Process\ProcessBuilder; use Symfony\Component\Process\PhpProcess; use Symfony\Component\Filesystem\Filesystem; use Helpers\ProcessLocker; $locker = new ProcessLocker($config['lock_file']); if ($locker->isLocked()) { return; } $locker->lockProcess(); $logFileName = $config['log_files_path'] . 'report ' . date('d-m-Y H i s') . '.log'; $fs = new FileSystem(); $fs->touch($logFileName); $logger = new Logger('csv_batch_importer'); $logger->pushHandler(new StreamHandler($logFileName, Logger::DEBUG)); $logger->pushHandler(new FirePHPHandler()); $files = array_filter(scandir($config['output_csv_path']), function ($file_name) { return preg_match('/^output.*\\.csv$/', $file_name) ? $file_name : null; }); foreach ($files as $file_name) { $file_name = $config['output_csv_path'] . $file_name; $process_builder = new ProcessBuilder(array($config['php_path'], __DIR__ . '/csv_process.php', $file_name), $config['proc_working_path']); $process_builder->setTimeout(0); $process_builder->getProcess()->run(function ($type, $buffer) use($logger) { if (Process::ERR === $type) {