10 фактов об ИНФОСТАРТ.




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

23 Comments

  1. АЛьФ

    Поздравляю 🙂

    Reply
  2. Abadonna

    Молодцы, так держать!

    Reply
  3. vasilykushnir

    Поздравляю. Результаты впечатляют. Вам (владельцам сайта) есть чем гордится. Да и нам тоже — хоть какое-никакое, но имеем отношение… Только Доржи я бы добавил еще два факта:

    1. Атмосфера доброжелательности и взаимопонимания, которой не похвастается ни один другой форум. А о том что всегда можно получить очень квалифицированную консультацию или улышать хорошие советы по своим разработкам — я вообще молчу…

    2. Инфостарт постоянно развивается и это вселяет надежду.

    Reply
  4. coder1cv8

    Развитие проекта на лицо, меня это искренне радует!

    Reply
  5. Father

    Парни, выручайте!

    Наших бьют!!!

    http://infostart.habrahabr.ru/blog/34030.html

    Reply
  6. ineoosaki

    Спасибо за проэкт.

    Есть небольшой вопрос:

    Уважаемый суппорт, почему не сходиться статистика?

    На закладке «люди» — зарегенных пользователей > 21000, а в статье 18032.

    Reply
  7. WWWolfy

    Как первый победитель конкурсов http://infostart.ru/community/history/

    поздравляю ресурс с юбилеем!

    Да, в начале пути выиграть приз было легче (вероятность больше), разработок было немного.

    Но я вспоминаю, как форум Т1С с очень большим недоверием отнёсся к появлению «пиарной» веточки про Инфостарт, как с настороженным прищуром наблюдали за первым конкурсом (первые 3 камента тут: http://infostart.ru/profile/214/projects/91/ )

    Потом я съездил в Питер и покатался просто на удивительной водоплавающей штуке «Centaurus II», пообщался с 1С`никами и ребятами из Инфостарт, которые несмотря на погоду создали тёплую обстановку.

    И хотя в последнее время я почти не занимаюсь кодингом в 1С, я всёже вижу как тепло отзываются люди о проекте. Значит ребятам удалось не только развить проект, но в тоже время и остаться душевными людьми не ушедшими в бизнес «без остатка». Очень печально порою наблюдать как люди вкушая успеха становятся «холодными».

    Поэтому пожелаю проекту развития и успехов (в денежном эквиваленте тоже!), но в тоже время пожелаю сотрудникам Инфостарт оставаться такими же улыбчивыми и творческими людьми!

    Ура! Ура!

    Reply
  8. JohnyDeath

    Поздравляю. ИМХО, темпы развития очень хорошие!

    Reply
  9. support

    ineoosaki, а где ты нашел > 21000

    Reply
  10. CheBurator

    Поздравляю портал и его хозяев с несомненными достижениями! желаю расти и развиваться!!

    Reply
  11. ineoosaki

    2 support

    Ходим вниз данной страницы. На сером фоне столбец «Сообщество». Щелкаем раздел «Люди».

    Поподаем на страницу в которой зарегенные челы сгрупированны в группы по 25 человек. Таких групп — 843.

    Нехитрый подсчет указывает на цифру > 21000.

    Reply
  12. das

    Поздравляю ресурс с юбилеем!

    Зарегистрировалась в сентябре 2006 года. Посещала сайт примерно 1 раз в месяц.

    А сейчас почти каждый день. Все очень наравится.

    Это тот случай когда «и полезно — и приятно».

    Удачи Вам и Вашему бизнесу!

    Reply
  13. das

    Отдельное поздравление — support ака Цыденов Доржи —

    за внимательное отношение к форумчанам и их разработкам, за теплый дружеский юмор.

    Мы все его уважаем и ценим!

    Reply
  14. German

    а я бы еще добавил что на этом портале есть очень эксклюзивные и полезные разработки…

    Reply
  15. z-alexey

    Поздравляю!!!

    На мой взгляд лучший в Интернете, посвященный разработкам 1С.

    Reply
  16. Снусмумрик

    Поздравляю Инфостарт с д.р.

    На мой взгляд это лучший ресурс в Интернете, где можно скачать разработки для 1С

    Reply
  17. корум

    Поздравляю, ребята!

    «если не нашёл нужную вещь на инфостарте, очень может быть, что ее нет вообще!» (с)

    Reply
  18. ineoosaki

    корум написал:

    —————————————————

    «если не нашёл нужную вещь на инфостарте, очень может быть, что ее нет вообще!» (с)

    —————————————————

    Не факт.

    Скорее всего, это указывает на то , что ты не там ищешь.

    Тем более, что лучшее из инфостарта кочует в обменники и на фтп.

    Reply
  19. ineoosaki

    2 support

    коруму плюснул, а как же ответ на поставленный вопрос?

    Reply
  20. support

    ineoosaki, обязательно отвечу

    Reply
  21. Kavar

    Поздравляю!

    Reply
  22. support

    Спасибо Всем за поздравления!

    Reply
  23. viktnov

    Большое спасибо за сайт

    По моему мнению он самый лучший

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *