Ректальное администрирование: Основы для практикующих системных АДминистраторов




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

25 Comments

  1. boln

    Оно же вагинальное и фалломорфное?

    Reply
  2. user716065

    Ха-ха-ха. Очень повеселили. С удовольствием прочитал

    Reply
  3. dsdred

    Порадовал пункт 2.

    Взял я контору на аутсорс и создали мне там тестовую БД для разработки.

    Так вот за 2-е недели администраторы умудрились мне 4-ре раза удалить мою тестовую базу, при этом восстановление делали по задаче. Красавцы просто!

    П.С. Надеюсь Славик прочитает данную статью!

    Reply
  4. Jokemas

    (3) Вся эта статья написана по мотивам работы одного админа, с которым сейчас вынужден взаимодействовать =))). Скриншот про количество скриптов — реальная ситуация =))).

    Reply
  5. dsdred

    (4)Я думал у Славика самые золотые руки )))

    Я бы еще добавил.

    Настройка ПО.

    Ни в коем случае не меняйте настройки по умолчанию! На разработку программного обеспечения корпорации потратили кучу денег и выработали правильное расположение галочек в установке. Поэтому ни в коем случае не ограничивайте количество съедаемой оперативки MSSQL, пусть ест столько, сколько ему нужно.

    Если Вы настраиваете виртуальные машины не ограничиваете их суммарные ресурсы ресурсами сервера на котором они крутятся! Дайте им суммарно больше ресурсов, в конце концов пусть поработает искусственный интеллект!

    Планируйте закупку оборудования!

    Что за бред! Почему вы должны думать за остальных! Выпрашивать закуп жестких дисков, процессоров! Это не Ваши обязанности, пусть собственник бизнеса сам решает, он же вроде взрослый человек…

    Быть ответственным

    Если что, то сломалось или вас просят настроить, просите инструкцию. В интернете столько вирусов и вредной информации, не рискуйте искать ответы! Если что всегда можно сказать: -Во всем виновата программа с желтыми окошками!

    Уважайте заказчика

    Начинайте диалог со слова ИМХО. Пусть челядь знает кто тут авторитет!

    Reply
  6. Jokemas

    (5) О, да туда много чего можно добавить =)). На самом деле рукопопые админы — творческие личности, они постоянно развиваются в своем «творчестве», поэтому список может быть бесконечным =)))).

    Reply
  7. zinal

    Классика же. В оригинале — BOFH Stories, плюс отечественное творчество по мотивам: http://welinux.ru/post/984/

    Reply
  8. w.r.

    (5)

    Настройка ПО.

    Ни в коем случае не меняйте настройки по умолчанию! На разработку программного обеспечения корпорации потратили кучу денег и выработали правильное расположение галочек в установке. Поэтому ни в коем случае не ограничивайте количество съедаемой оперативки MSSQL, пусть ест столько, сколько ему нужно.

    Если Вы настраиваете виртуальные машины не ограничиваете их суммарные ресурсы ресурсами сервера на котором они крутятся! Дайте им суммарно больше ресурсов, в конце концов пусть поработает искусственный интеллект!

    Можно не согласиться. Лучше настройки по-умолчанию, чем бездумное выставление параметров или «на глазок»

    Reply
  9. Jokemas

    (8) Лучше настройки не по молчанию, а те, которые обдуманы. Настраивая любой продукт для использования нужно исходить из потребностей, поэтому часть функционала может быть не нужна. Да что там, даже при установке каких-либо софтин нужно руками отключать левый, ненужный хлам, который может прилепиться «прицепом».

    Еще прикольно наблюдать по 2-3 антивируса на рабочих местах пользователей, при том. что ни на одном нет свежих баз, лицензии и т.д.

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

    Reply
  10. dsdred

    (8)

    Лучше настройки по-умолчанию, чем бездумное выставление параметров или «на глазок»

    Вот такой уровень админов и пугает… Если не знаешь — почитай, разберись. Попробуй на тестовом.

    Просто выше упомянутый Славик делает так:

    1 Ставит по умолчанию или кое как.

    2 Начинаются косяки, он говорит: -С моей стороны все ок! Это программа с желтыми окошками, пусть смотрят программисты.

    3 Программисты сидя на одной из виртуалок пытаются в замочную скважину оценить почему все при смерти и тут или находят, что этот золоторукий не ограничил MSSQL. Или обратившись к Аутсорсному админу выясняется, что Славик как всегда где то недонастроил или не настроил.

    4 Предъявляют ему факты и инструкцию как починить.

    5 Славик пытается чинить…

    6 Если проблема не очень острая ждут когда Славик Безславно сможет! Или через несколько дней чинят за него (не смог… Чаще всего).

    П.С. Идут годы а методика не меняется. Каких я только выкрутасов насмотрелся за время работы с ним (полтора года мучений)…

    Reply
  11. starik-2005

    (10)

    Идут годы […] (полтора года мучений).

    Уволь. В чем проблема?

    Reply
  12. dimisa

    Статья высосана из пальца.

    Где три абзаца про линукс.

    и отдельный раздел про облака.

    Reply
  13. dsdred

    (11)

    Уволь. В чем проблема?

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

    Reply
  14. Jokemas

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

    З.Ы. Проблема на самом деле не иллюзорная, довольно часто встречаются «золоторукие», которые своей деятельностью вредят компании, фактически саботируя работу. Можно, конечно, развернутую статью описать, но ведь все и так поняли о чем речь, зачем усложнять и разжевывать. Каждый может вспомнить свой опыт встречи с подобными «профессионалами» и их методами работы. Список может быть бесконечным, как я написал выше.

    А по поводу высосана из пальца… Я вот сейчас пробую работать с этим админом, это жесть. Столько противодействия со стороны ИТ я еще никогда не встречал, он реально палки в колеса вставляет своим подходом к работе.

    Reply
  15. starik-2005

    (14)

    Проблема на самом деле не иллюзорная

    Время иллюзорно, время обеда еще иллюзорнее))) (с)

    Reply
  16. w.r.

    (9)

    Согласен. Скорее те, которые не просто обдуманы, но еще и протестированы

    (10)

    К ПО от солидных фирм, типа IBM например, идут с рекомендациями по настройке и выставлению параметров от разработчиков. И любой сисадмин в 99% из 100 не сделает лучше, чем эти рекомендации

    Пугают сисадмины, которые знают лучше, как работает ПО, чем разработчики, и плюют на их рекомендации. А такое плошь и рядом

    Reply
  17. cssprite

    (14)

    А по поводу высосана из пальца… Я вот сейчас пробую работать с этим админом, это жесть. Столько противодействия со стороны ИТ я еще никогда не встречал, он реально палки в колеса вставляет своим подходом к работе.

    Как же легко навешивать ярлыки, богоподобный.

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

    А по сути бред очередного графомана. Собственное раздутое эго и уверенность в свой АБСОЛЮТНОЙ непогрешимости в суждениях.

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

    Reply
  18. Jokemas

    (17) Как же вы легко навешиваете ярлыки, богоподобный.

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

    А по сути бред очередного графомана в комментариях. Собственное раздутое эго и уверенность в своей АБСОЛЮТНОЙ непогрешимости в суждениях.

    Теперь по сути. 1С-ником я полностью стал не так уж и давно =)). Моя деятельность в основном была связана с системным администрированием, потом руководством отдела, после этого занимался проектами, запусками служб ИТ, аудитом ИТ в организациях и т.д. Мое мнение достаточно компетентное, тем более что эта статья — стеб всего лишь над одним админом, который не хочет внять голосу разума, не более. Если вы приняли эту статью на свой счет, то что-же… На вору и шапка горит =))). По поводу того, что меня «посчитают не обеспечивающим компании благоприятную среду», эта часть «АБСОЛЮТНО непогрешимого суждения» уже несостоятельна по той простой причине, что для таких суждений нужно владеть полной информацией, у вас этой информации нет, ее никто не дал. Вы статью, которая даже не привязана к чьему-бы то ни было имени или компании уже оценили, как какую-то провокационную =))). Уважаемый, так это не работает. «Оставайтесь на линии, ваше мнение очень важно для нас».

    Эта статья свою задачу сделала. Качественный троллинг товарища проведен, профит получен, кроме того люди нашли эту тему занимательной, а значит она принесла определенную пользу.

    По поводу цитаты, на которую идет ответ… Вообще без комментариев ))). Очередной агрессивный папуас, который решил, что может закидать копьями кого-то только потому, что мимо проходил. Как говориться: «Будете проходить мимо, проходите мимо».

    Какая агрессивная риторика, такой и ответ ))).

    Reply
  19. Сто27001

    Не зачет. Свалили в одну кучу эникейщиков, техподдержку, админов разных специализаций.

    Reply
  20. Jokemas

    (19) Так рукопопые админы так и работают. Все сразу и все плохо =)). Статья ведь о том, что люди не хотят развиваться, что делают так, как получилось, а не так, как надо, после чего тиражируют свои решения везде, где припрет. Все специалисты ошибаются, рукожопят на разных стадиях своего развития, но с опытом начинают делать правильно, качественно. Бывают же и такие, которые сидят от зарплаты до зарплаты, никак не развиваясь и считают, что «и так сойдет, оно же работает». Это шуточная статья, я даже указал, с какую за шаблон взял, поэтому по задумке она должна повторять стилистику той статьи =).

    Reply
  21. Сто27001

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

    Reply
  22. Jokemas

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

    Есть еще один момент, о котором афтар(т.е. не я упомянул) =))). Все дело в том, что реально рукожоп тот, кто эти методы применяет из года в год (этот уже 12 лет так трудится), продолжая отравлять ИТ среду своим присутствием. Рукожоп тот, кто использует методы для небольших организаций, в полноценных торговых сетях, где более 80 торговых точек, несколько офисов, есть своя служба по обслуживанию торгового оборудования и орг.техники, есть свой штат программистов 1С и свой штат системных администраторов, но из-за бездарного управления этого «админа», который как-бы руководитель (по документам), но админит и пишет скрипты (да-да, те самые 529), все эти отделы стали работать как отдельные, конкурирующие подразделения. Короче, это настолько веселая ситуация, что я бы ее называл «антиутопией», Fallout в мире ИТ =))…

    Сейчас перечитал это и понял, что сам себе бы не поверил в такое, но блин, оно так!

    Reply
  23. cssprite

    (22)

    но из-за бездарного управления этого «админа», который как-бы руководитель (по документам), но админит и пишет скрипты (да-да, те самые 529)

    А вот и источник боли ))

    Reply
  24. riposte
    Reply
  25. acanta

    Это понятно. У одних нет слуха, у других голоса, но все хотят петь хотя бы караоке. В результате композитору от господина Попандопуло достается только белье, которое ему не по размеру, потому что звезда исполняет не его песню.

    Это стихи переводятся с другого языка. А мелодию можно только угадать, причем двже с трёх нот.

    Reply

Leave a Comment

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