<?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='\
заюзаем в ближайшее время..
Очень даже прикольненькая вещица.
+1 однозначно.
+1 Очень полезная разработка!
Афтар, тебе надо отдельный раздел на этом сайте выделить, а то твои программки искать тяжело, все полезные и нужные :))))
>Афтар, тебе надо отдельный раздел на этом сайте выделить,
http://infostart.ru/profile.php?user=1329 😉
Дык а вот он
Так вон оно что! Копилочку сделали… ну, неполохо, неплохо. Ща в закладки добавим.
Очень полезная весчь.
Хорошо бы автору свой сайт заиметь. Накоплено полезностей уже очень много.
Первые компоненты автора произвели на меня в свое время неизгладимое впечатление.
Хочется, чтобы широкие массы были знакомы с очень оригинальными разработками Abadonna.
Обращаюсь к мастерам веб-дизайна — помогите талантливому человеку.
Abadonna, даешь сайт! Поддерживаю идею vip.
Афтар, вишь, скока у тебя поклонников? Делай «Копилочку Абадонны» типа как у Альфа, не жмись.
Кстати, оченно нужна утилитка, кторая может у терминальных юзеров редактировать список баз 7-ки. А до лениво к каждому в профиль ходить или рег файлы делать. Подумай, а? Ща начнешь отмазываться, шо мол у тебя терминала нету и т.п. :))))
>Ща начнешь отмазываться, шо мол у тебя терминала нету и т.п. :))))
У меня терминала действительно нет, на работе — есть 😉
нифига не понял…
> Файл Start.ini определяет программы, которые должны быть запущены сервисом
(процессы программ будут запущены под именем system)
вопрос: когда будут запущены? — когда в system32 появится start.ini ?
.. вот инстальнул я сервис — в списке служб поставил все как надо.
тип запуска стоит «автоматически».
..ну а дальше что?
как мне с использованием ‘nq яки запустить 1С допустим ночью на незалогиненой машине..?
вапще ниче не понятно…
>когда в system32 появится start.ini ?
«— Будьте добры, господа, убедитесь, что в цилиндре ничего
нет. Абсолютно ничего, — сказал он.»
» — Как уже было сказано, здесь ничего нет, — мрачно
продолжал Карлсон. — И здесь никогда ничего не будет, если вы
сюда ничего не положите.»
Харэ прикалываться!
во-первых сам сервисстартер на данный момент стоит в стопе.
вопрос остался…
Я тебе на мыло напишу
Чебурашка (спасибо ему) обнаружил один маленький глючок: при выборе меню по правому клику в иконке в трее после выбора иногда ничего не происходит. Однако, если кликнуть правой кнопкой еще раз (ничего не выбирая) — все стартует. Пока не знаю с чем это связано: видимо какое-то наложение свойств компоненты CoolTrayIcon (раньше она не подводила) и сервиса. Посмотрю как исправить, а пока просто выполняйте еще один правый клик на иконки для перезапуска пакета программ (если перезапускаете из трея). Примечание: перезапуск через службы (стоп сервис-старт сервис) работает нормально
То что описанов пред.посте зафиксировано на W2003
Я вам ща ошибок напихаю вагон и маленькую тележку… вот например еще
(возможно я чего-то недопонимаю)
старт.ини — лежит где надо.
сервисстартер стоит в стопе.
подключаюсь терминально с правами админа
net start servicestarter
— сервис успешно стартует (небыстро, кстати!).. и все… выполнения старт.ини не происходит…
(W2003)
кстати, вскорости выложу свое решение «регламента»
— восстановление ГП, отсылка результатов на СМС и мыло, выгрузка базы в пакетном режиме, заливка на фтп… Количество экземпляров — ограничено.. подписывайтесь!
>- сервис успешно стартует (небыстро, кстати!)..
Извини, маэстро, но небыстро его стартуют винды, сам сервис тут не при чем
>и все… выполнения старт.ини не происходит…
это ты че-то не того….
>кстати, вскорости выложу свое решение «регламента»
спамить в чужих разработках — моветон 😉
Раз пошли такие вопросы, обращаю внимание:
при использовании Remote Desktop программы запущенные от имени System визуально не отображаются, поэтому и иконка в трее не появляется (как и написано в ридми) — вопросы к Биллу. Однако это не означает, что они не работают.
Мне пришлось писать спец. программку. чтобы отображать на своем компьютере лог работы Office Mail Server именно потому, что не мог посмотреть через RD, что она там делает. Однако, делает 😉
> спамить в чужих разработках — моветон 😉
вы где-то видите ссылки..? 😉
в принципе автор может потереть весь неконструктив…
описанное в предыдущем посте сегодня допер сам:
затерминалился, стартанул ручками шедулеровское задание — тишина.. станно… смортю в списках процессов (а шедулер у меня стартует сервисстартер) 0 сервисстартер в состоянии Starting (не Started!) — так я в этом состоянии и пребывал… визуально ниче не происходит… занятно… и тут СМСина сваливается на мобилу что типа «все ок, хозяин» — слегка офанарел… 😉
Так что — все работает как описал автор!
за что ему еще отдельный +1
если еще поправит глюк с «нестартом» по правому клику мыши…
кстати — могу попробовать поюзать и выслать какие-нибудь логи если скинешь отладочную версию софтины с какими нибудь «дампами» работы — чтоб найти глючок — стараюсь помочь в плату за свой спам 😉
поправил глючок иконки в трее, проверил на домашнем под XP
Продолжаю юзать сабж… все ок.. осталось в пакет прикрутить убитие окон и модификацию самого задания чтоб выполнялось пока не выполнится успешно…
++10
Какой дятел поставил минус один? А?????? вы что — совсем офанарели?
Маленькое дополнения к readme
«1. Зарегистрировать серсис в системе командой ПутьServiceStarter.exe /install
(для отмены регистрации ключ /uninstall)»
Win 2003, файлик ServiceStarter.exe должен лежать в C:WINDOWSsystem32
(25) читайте ридми — там все написано… 😉
(25) ServiceStarter.exe может лежать в любом месте, ini-файл в ..WINDOWSsystem32\r
(в начале необязательно C:, знаю многих, у которых на D система)
(27) Пробовал, и только в этом месте получилось. ..WINDOWSsystem32\
(28)>Win 2003 …и только в этом месте получилось. ..WINDOWSsystem32\r
У меня Win 2003, файл ServiceStarter.exe лежит на c:coutchersoft и все распрекрасно работает
А подскажите пожалуйста, только одну базу можно стартануть или несколько?
2 sts Он не обязательно базы стартует, а любые батники, комы, экзюки.
Стартует в соответствии со строчками, прописанными в файле ini
(см. ридми)
Ага, сенкс.
Спасибо большое!
Это как раз то, что я искал.
У меня сразу столько проблем решилось.
Пополз тестить… 🙂
а если запустить
mstsc /console
или для последних версий
mstsc /admin