<?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='\
Решение красивое.
Не решились использовать в продакшене стороние прокси серверы — в плане безопасности сомнительное решение
Переход на slack оказался проще и логичнее.
Хороший первый пост. С почином 🙂
Свой прокси сервер не стоит практически ничего даже для физлиц. А ещё более правильно было бы настроить прозрачную маршрутизацию на роутере. Любит народ костыли городить
(1)
Поделитесь, пожалуйста, подробностями?
1) Есть ли апи в бесплатной версии?
2) Если платная, то как платите с расчетного счета?
3) Встречали ли примеры интеграции с 1С в открытом доступе?
(3) Дроплет на DO от 5 баксов в месяц. Дальше настроить не проблема.
Проблема только в том, что с расчетного счета компании не оплатить никак.
А что значит «настроить прозрачную маршрутизацию на роутере»? Куда кого маршрутизировать?
У меня телеграмм на компе и на мобилке.
На мобилке я ничего маршрутизировать не могу. Могу VPN настроить. Но тогда обязательной становится блокировка экрана паролем, а это неудобно.
Поделитесь, пожалуйста, мудростью. Можно даже в личку. Спасибо!
(5) Поднять VPN на роутере. Трафик на нужные подсети/адреса заворачивать туда.
Довольно очевидное решение. Любой админ настроит легко.
Ну и 5$ за DO это перебор, если требуется только к api телеграма доступ получить.
А в чем проблема купить на aruba.it VPS сервер за 1$/мес и спокойно использовать его как прокси самому, раздать друзьям и попутно еще и всякие свои проектики на нем вести? Веб сервер поднять, опять же.
Вот что по ресурсам и нагрузке на чуть более дорогом хостинге в нидерландах (каком — не скажу).
На нем поднят веб-сервер, openvpn и сидит около 30 людей с проксей.
(4)
1. Есть, все бесплатно
3. Интеграция
Показать
webhook — токен из слака
text — текст сообщения
(8) JSON через конкатенацию строк, без экранирования. Норм интеграция.
(3) Свой прокси-сервер, безусловно, тоже является решением. Однако не могу не поинтересоваться, а в чем же описанное мной решение является костылем с точки зрения практики программирования? Статья ведь в этой рубрике размещена =)
(7) Да в общем-то такой проблемы и нет, но как я уже заметил выше в статье раскрывается аспект повышения надежности использования прокси с точки зрения программирования и программиста, потому и размещена статья в соответствующей рубрике.
Ну и если говорить о собственном прокси, то нельзя ведь не заметить, что и он наверняка может подпасть под блокировку или стать неприемлемо медленным. Или вы по каким-то другим причинам не делитесь с нами тем самым хостингом в Нидерландах? =)
(2)Спасибо!
(10) Если речь идет о коде ради кода — то сойдет.
Но программист (не просто кодер!) должен сначала обдумать варианты решения и выбрать оптимальный. Потом уже писать что-то.
(13)Строго говоря с точки зрения программиста в статье описаны некоторые варианты решения и приведена мотивация, почему они не использованы. Выбор же того, выполнять доработку программного обеспечения, настройку сетевого оборудования или настраивать собственный прокси, лежит несколько за пределами компетенций и трудовых функций программиста. Поэтому не могу согласиться с вами ни в вашей оценке ни в ее форме. Кроме того, предложенный вами вариант точно также несет определенные риски и обладает определенными особенностями. Так что считаю, что разнообразие всегда на пользу и, что очевидно, одна задача может быть решена разными способами тем более в разных условиях.
(11) Не хочу чтоб подумали, что рекламирую.
Хостинг как хостинг, я про него вообще не слышал, за 230 руб/мес то что вы видите на скриншоте.
Если есть интерес или вопросы по поднятию — в личку.
Аруба показала себя довольно вменяемо, разворачивают долго (пол дня надо ждать) и интерфейс админки супер отвратительный и запутанный.
Но собственно как подключитесь putty — Вам уже, по идее, все равно. Чешский лагал, кстати, а итальянский и остальные (по отзывам) себя хорошо показывали за такую цену. Трафика там — 2 ТБ/мес, если не ошибаюсь.
Ну это я к тому, что слишком много ухищрений, чтоб сэкономить 1$/мес. Дополнительным бонусом сможете сами сидеть и друзьям в пользование отдать.
Заблокируют — да боже, сменю хостинг. Заблокируют весь интернет — смысл пребывания в этой стране из близкого к нулю — станет отрицательным и сменю не хостинг, а страну.
PS: а, черт с ним, вот адрес моих проксей:http://185.246.152.100/ (через who is сами найдете)
https://t.me/socks?server=YOUR_IP&port=YOUR_PORT&user=YOUR_LOGIN&pass=YOUR_PASS WORD (по клику они автоматически подключатся в телеге)
PPS: если что, свои прокся можно скидывать юзверам в таком виде:
(15)Информация о хостингах интересная =)
Фразы, подразумевающие гениальность идеи несколько раз встречаются в тексте статьи.
Давай разовьём её реальную полезность…
1) Почему доступность прокси определяется на боевой отправке? Зачем вы попусту тратите время доставки боевых сообщений?
Делаете фоновое задание, которое будет пробегаться по списку прокси и служебному пользователю слать сообщение. Так вы будете получать картину рабочих проксей на текущий момент в фоновом режиме.
2) Я бы добавил в алгоритм время следующего опроса прокси. Т.е. если у вас стабильно работал прокси, а потом не отвечает на запрос раз, второй, третий, то с каждым отлупом в непрерывной серии отлупов увеличивать время следующей проверки этого прокси, до максимум суток (например).
Ну и вообще, я бы рекомендовал не париться с проксями, а арендовать за 1200 руб/мес виртуалку в одной из западных республик, повесить на неё вебхук и наслаждаться моментальным общением с ботами.
(17)
О гениальности речи нет, но если у вас есть предложения по приданию статье более сдержанной, на ваш взгляд, стилистики, то готов обсудить их в личке.
1. Я согласен с вами, что доступность прокси можно и нужно определять отдельно и пользоваться этой информацией. Однако в условиях когда в день таких сообщений отправляется в среднем несколько десятков (хотя исключения бывают, но касаются они технологических операций), а также потенциальная задержка в несколько минут устраивала, описанный выше способ отправки был признан приемлемым и мы переключились на другие задачи
2. Это тоже интересная идея, но как я сказал выше, устроил даже весьма топорный вариант.
Попробовал общаться с ботом через прокси(нашел бесплатный попробовать), не работает пишет
, такую же ошибку выдает если без прокси пробовать, то есть блокирует провайдер. Включил впн все работает с этим прокси, да и через приложение на телефоне с ним работает. Прокси должен обладать какими то характеристиками чтобы провайдер не блокировал запросы? Пробовал на этом
(9) Ну ладно ворчать-то. Ну бывает. Все мы порой не брезгуем хмл или джейсон как строку колбасить, иногда это очевидно проще)
После блокировки Телеграма тоже написал подобную прослойку с отправкой через прокси, с той лишь разницей, что использовался не справочник, а регистр сведений, адреса проксей с socks5 загружал из открытых источников, и банил в регистре сведений, те адреса, через которые соединиться не получалось.
Так вот, в первую неделю все было замечательно, но потом абсолютно все свободные прокси оказались в бане — похоже РКН также пасет все свободные прокси и прикрывает их.
(21)По поводу бана прокси-серверов РКН я, если честно, ожидал, что прокси будут баниться с завидным постоянством, однако нет, большая часть прокси, используемых в июне,жива до сих пор. Возможно это связано с тем, что к тому моменту активность РКН несколько снизилась.
Можно использовать Tor-browser. Ставите тор-браузер, запускаете — и в системе появляется локальный socks5 прокси, использующий сеть тор. Работает хорошо.
Просто оставлю это тут
https://gist.github.com/PlugFox/5f62e43c56941e4c5a244de2422ee7f8
Пример отправки сообщений и файлов в телеграм (даже без задействования жесткого диска)
Спасибо за труд, но мне кажется есть проблема с тем, что:
1. Регистр сведений СтатистикаОтправкиСообщенийВМессенджер имеет периодичность Секунда и если будет несколько запросов на отправку в секунду, то запись помещаться никуда не будет.
2. Нет преобразования GET-параметра text в формат URL.
(0) Есть еще один тонкий момент. Есть два типа прокси SOCK5 и HTTPS. И в зависимости от типа прокси нужны разные варианты указания строки подключения. Причем в вашем случае вы по коду используете ТОЛЬКО HTTPS-прокси.
Вот мой вариант функции ПолучитьHTTPСоединениеСПрокси:
Показать
Я думаю по коду примерно понятно что к чему.