Скрипт импорта CSV в базу данных в формате JSON
Доброго времени суток!
Написал скрипт, который будет запускаться по крону, для обновления информации на страницах из
CSV файлов, которые располагаются на других сайтах.
Скрипт вроде работает, но хочется убедиться, что всё правильно с точки зрения безопасности/оптимизации и прочего. Поэтому обращаюсь к сообществу с целью исправления ошибок, если таковые имеются.
Написал скрипт, который будет запускаться по крону, для обновления информации на страницах из
CSV файлов, которые располагаются на других сайтах.
Скрипт вроде работает, но хочется убедиться, что всё правильно с точки зрения безопасности/оптимизации и прочего. Поэтому обращаюсь к сообществу с целью исправления ошибок, если таковые имеются.
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
define('MODX_API_MODE', true);
require_once dirname(dirname(__FILE__)).'/core/config/config.inc.php';
require_once MODX_BASE_PATH . 'index.php';
$q = $modx->newQuery('modResource');
$q->where(array('parent' => 6,'published'=>1,'csvlink:!=' => ''));
$q->select('id,csvlink');
if ($q->prepare() && $q->stmt->execute()) {
while ($rowss = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$array = array($rowss['id'] => $rowss['csvlink']);
if (($handle = fopen($rowss['csvlink'], 'r')) === false) {
die('Error opening file');
}
$headers = fgetcsv($handle, 0, ';');
$promo = array();
while ($row = fgetcsv($handle, 0, ';')) {
$promo[] = array_combine($headers, $row); // $promo[$row['0']] для выноса ID в Индекс массива
}
fclose($handle);
$promo_json = json_encode($promo);
$resource = $modx->getObject('modResource', $rowss['id']);
$resource->set('promo_json', $promo_json);
$resource->save();
$modx->cacheManager->refresh();
}
}; Комментарии: 7
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Fi1osofFi1osofИ $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC); + foreach($res as $rowss){ лучше заменить на
while($row = $s->fetch(PDO::FETCH_ASSOC)).
Так памяти меньше кушаться будет, потому что не все записи сразу в общим массив набьются, а за раз только одна запись будет обрабатываться.
Fi1osofРуками запускаю – всё хорошо. Через крон с ошибками) Не подскажешь, как обходить их?
Fi1osof