Царь природы? Скорее заложник:-)




Принцип обмена данными из 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='\

16 Comments

  1. venger

    (0) Ну что ж, изучать людей, так системно и научно:-)))) Начнем-с:-)) Но помните, что доля юмора тут есть, как и в любом юморе:-)

    Reply
  2. int18h

    А я то думаю чего это наши топы зашевелились, как их шэф погразил: «разгоню всех нахер, дармоеды!». Работы сразу навали и «идей» куча про которые еще с полгода назад наш отдел в курилке мусолил )). Макаки дыкж!

    Reply
  3. anbxp

    Получается, что идиоты, которым даже думать вредно, создали теперешнюю цивилизацию?

    Reply
  4. 1snik

    чо то я не дочитав плюс влепил, а то бы не стал.

    Reply
  5. venger

    (2) Они создают видимость деятельности, ту, что 80%, а приносит 20% результата:-))))

    Reply
  6. venger

    (3) Во-первых, если говорить о достижениях тепершней цивилизации, то ее развитие обеспечил тот 1% людей, который сформулировал 99% идей, которые и дали возможность двигаться дальше и строить теперешнюю цивилизацию. И этот 1%, с одной стороны, был не всегда нормален, по сравнению с остальной массой им подобных, с другой стороны, оказывался в определенных внешних условиях, которые также стимулировали их.

    Во-вторых, большая разница, между идиотом, которому думать вредно (кстати, не надо обезьянок оскорблять) и физиологическим препятствием, состоящем в энергетических ограничениях продолжительной работы мозга. Но не стоит только впадать в заблуждение и любую деятельность, похожую на умственную, называть творческим мышлением. Когда хорошо подготовленный и натасканный программист ваяет простой (для него) отчет, например, его мозг не тратит столько энергии и не работает так интенсивно, как, например, у полного новичка, добавляющего столбик в печатную форму.

    В третьих, если Вы читали внимательно, думали и запоминали, то могли бы заметить такие слова в блоге, что мозг может решать сложные задачи и быстро, но не может постоянно работать в таком режиме (не забывайте еще и про то, что эти навыки еще и «тренируются», «развиваются», кстати). И действительно, так ли уж люди постоянно напряженно думают в течении дня над каждым своим выбором, действием, словом?

    Reply
  7. anbxp

    (6)

    1. Т.е. 99% людей можно спокойно вырезать — нет от них толка? Или без них все-таки не было бы цивилизации?:)

    2. Обезьянок никто не трогает:) «Думать вредно» — это я сделал вывод из статьи. Вот и сейчас можно маленький вывод сделать: новичек при добавлении столбца творчески мыслит, а опытный программер, делая отчет, так, ерундой занимается. Ведь у новичка вон какие энергозатраты:)

    3. Ну это естественно. Как и любой другой орган человека

    Reply
  8. venger

    (7) 1. Есть понятие значимых, критически значимых и не значимых показателей и зависимостей. Т.е., например, для программиста 1С’ника, при приеме на работу в той модели цивилизации, которая есть сейчас, гораздо более значимыми являются его профессиональные знания и навыки, чем его познания в философии или медицине, но ведь мы не говорим об уничтожении этих его дополнительных и разносторонних познаний, выходящих за рамки его профессии:-))))

    2. Если Вам скажут, что если постоянно жрать в течении дня, то можно и умереть от заворота кишок, не говоря уж о более мягких, но не менее вредных последствиях, таких как ожирение, например. То Вы сделаете вывод, что есть вообще вредно?:-))) И кстати, откуда Вы взяли зависимость, что чем меньше уходит энергии на выполнение задачи у конкретного индивида, тем менее важной эта задача становится?:-)))

    3. Что естественно? Что процесс мышления происходит редко в течении дня или вообще не происходит у большинства людей, особенно когда основные потребности удовлетворены (стабильным окладом, социальным положением на фирме, удобными условиями труда) и нет внешних раздражителей, таких как ультиматумы начальства и невозможность «спихнуть» проблему на подчиненных или коллег?:-)))

    Reply
  9. Арчибальд

    Известно, что все приятное либо неприлично, либо противозаконно, либо от этого толстеют. Эрго: думать неприятно.

    Reply
  10. 1snik

    много и напряженно думать без отдыха — вредно. мало думать — тоже. мозг не развивается и в критической ситуации может не отработать на 100%. вывод — надо и думать и отдыхать. какая свежая и оригинальная мысль 🙂

    Reply
  11. venger

    (10) Свежесть и оригинальность мысли, заключается в том, что думать надо, даже если внешние условия и внутренняя мотивация этого не требуют, но практика показывает, что в таких случаях, дремучие инстинкты побеждают, поэтому надо не забывать и себя заставлять, даже, если это не приведет к повышению или прибавки к з/п, или прямой прибыли или другой выгоде:-))

    Reply
  12. O-Planet

    Прочитал только эпиграф… Показалось на миг, что в фамилии писателя буква «Ш» стоит по ошибке…

    Reply
  13. venger

    (12) «Исключение составляют формы поведения, связанные с размножением.» 🙂

    Reply
  14. Трактор

    Много лишних букв, но вывод верный.

    Из-за физиологических ограничений человек может напряжённо думать очень недолго. Поэтому нельзя требовать от него напряжённого умственного труда в течение всего рабочего дня.

    И, конечно, тренировки никто не отменял. Физически тоже лень работать, иначе бы вокруг были бы сплошь атлеты. Умственные тренировки для программиста, ИМХО, важнее физических.

    Reply
  15. EvanDark

    Молочина … все по полочкам!

    Reply
  16. PeRom

    Интересное исследование, вот только выводы спорные. Где разделение умственной(творческой) деятельности и нервной(ИМХО она намного более энергозатратна). А также пополнение запасов энергии — больше чем уверен, что «желудочная деятельность» не основной поставщик энергии Человека, вот только многие не научились или разучились их использовать. И такой момент — есть спринтеры, а есть марафонцы — не раскрыта тема полностью. Раскрыта только в разрезе оправдания отдыха и ленности «творческой интеллигенции».

    Reply

Leave a Comment

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