<?php // Полная загрузка сервисных книжек, создан 2026-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='\
Какого такого фрилансера. Начинают часто с развоза ИТС )
Похоже, работа в пятницу закончилась… 🙁
(2) baton_pk, круто же
Не хватает показателей, сколько денег приносят источники за единицу времени.
(4) baton_pk, Дааа, с этим как раз проблемы и возникли. Дело в том, что обработчик ожидания работает всегда по разному, поэтому время нельзя посчитать точно. Ещё заметил такую штуку, что если неистово жать на любую точку формы то все обработчики ожидания начинают работать быстрее. Это Вам чит))
ААА! Прорисовка адово затупила!
Всё, сдохло. Снял задачу. Видимо, задерзил на рынке и пацаны пришли.
(7) baton_pk, Такое тоже было один раз, я тогда упростил состав формы (убрал группы лишние), вроде помогло. Смог дойти до конца игру. На какой платформе пробовали? Такси или УФ?
Даешь код на гитхаб!
(8)
8.3.5.1443, такси.
На такси сдохла форма, на УФ пока все ок.
Зачем там восемь(!) обработчиков ожидания, которые делают почти одно и то же?!
PS. АААА! И каждый доступность элементов меняет!
(12) baton_pk, «Во-вторых, будут ли стабильно работать около 10-ка обработчиков ожидания, запущенные одновременно.» — это из статьи. А так сначала было в планах засунуть в один обработчик, но получилось так массивно, что всё тормозило. Поэтому и разделил. А с доступностью элементов я немного не понял, я не встречался с тем, что изменение доступности как-то тормозило. Да и сервер не вызывается при изменении. Просветите пожалуйста)
(13)
просто, просто куча-кучу ненужных действий.
PS. запустил на управляемых. авось тут дойду до конца.
…. ах, да, вспомнился по данной теме 🙂
УФ, 7 уровень, полёт нормальный, ничего не лагает. правда, форму пришлось в конфигураторе подрихтовать (только внешний вид, не читил!)
Когда я был в двух шагах от Штата программистов, всё сломалось. Повторный запуск не помог. 8.3.5.1383 Такси.
На УФ стабильно все купил щелкает на ура конфа БСП платформа 8.3.5.1248. На БП3 в «Такси» начинаются глюки с отрисовкой, а затем вовсе виснет.
Всё! Нанял БГ на работу! УФ, 8.2.19.83.
Такси проиграла этот стресс-тест!!!
(13)
Ничего не массивно:
Показать
А на 8.3.6 стабильнее работает или так же?
(22) asved.ru, так же. Потестил, тоже форма полетела уровне на 5 (Такси). Но идея прикольная. Автор молодец.
(23) PrinzOfMunchen, Такси зло!))))
(5) Очень классная игра) Особенно когда начальство не дремлет, а делать нечего)
Всегда можно оправдаться нагрузочным тестированием)
За идею плюс. Скачать еще решаюсь 🙂
За идею и реализацию — плюс, сделай что-нибудь с показателями заработка за единицу времени.
Как нуралиева нанять? денег миллиард уже, а кнопка нанять не активна.
на такси зависает )))
вы бы описали в статье, что за игра, что надо делать, скриншотов > 3 выложили бы. А то качать кота в мешке — не очень.
Когда считается, что ты прошел/победил?
В 1С работать надо. А играть (для разрядки, отдыха и т.д.) надо в нормальные профессионально сделаннные игры. Хотя учитывая специфику работы програмиста (или пользователя) 1С, лучшим отдыхом считаю активный.
(31) DAnry,
а ещё лучше экстремальный — нервишки сталью покрывает.
Скачал, немного подправил форму, и… забил на работу!!!
Круть!
Я бы добавил паузу. А то фрилансить когда у тебя уже сеть франчей работает в 5м уровне не сильно хочется :-))
Ну… день времени… результат.
Хорошо что есть манагеры… Пол дня работали… Пришел, снял бабло и дальше работать :-))))