Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function messagesDownload ($type_download, $type_run, $account_id, $peers_limit, $peers_cycles, $peer_messages_limit, $channel_id) {
- // Проверка выбора аккаунта
- if ($account_id >= 0) {
- } else {
- $messages_error_msg = "Не выбран аккаунт!";
- return $messages_error_msg ;
- }
- // $type_download = 1 - скачивание к началу канала
- // $type_download = 2 - скачивание от +100 к последнему скачанному
- // $type_run = 1 - обычный запуск
- // $type_run = 2 - запуск в кроне
- // Подключение настроек БД
- switch ($type_run) {
- case 1:
- require_once 'inc/config_db.inc.php';
- break;
- case 2:
- require_once '/home/i/ifredspb/tg.icrud.ru/public_html/inc/config_db.inc.php';
- break;
- }
- // Подключение к базе
- $link = mysqli_connect($host, $user, $password, $database);
- if (!$link) {
- $result_link = "Ошибка2: " . mysqli_connect_errno($link) . ": " . mysqli_connect_error($link);
- return $result_link;
- }
- // 2 Подключение к базе
- $link2 = mysqli_connect($host2, $user2, $password2, $database2);
- if (!$link2) {
- $result_link2 = "Ошибка2: " . mysqli_connect_errno($link2) . ": " . mysqli_connect_error($link2);
- return $result_link2;
- }
- // Установка кодировки utf8
- $charset_res = mysqli_set_charset ($link, $charset);
- if (!$charset_res) {
- $result_charset = "Ошибка: " . mysqli_errno($link) . ": " . mysqli_error($link);
- return $result_charset;
- }
- // 2 Установка кодировки utf8
- $charset_res2 = mysqli_set_charset ($link2, $charset);
- if (!$charset_res2) {
- $result_charset2 = "Ошибка2: " . mysqli_errno($link2) . ": " . mysqli_error($link2);
- return $result_charset2;
- }
- // Проверка на пригодность аккаунта для скачивания сообщений
- $account_select = "SELECT * FROM accounts WHERE id = " . $account_id;
- $account_result = mysqli_query($link, $account_select);
- if ($account_result){
- $account_rows = mysqli_num_rows($account_result);
- if (!$account_rows) {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Нет такого аккаунта!" . "\n";
- return $messages_error_msg ;
- } else {
- $row = mysqli_fetch_assoc($account_result);
- if ($row['block_end_ignore_flag']) {
- $peers_array['block_end_ignore_flag'] = "ДА";
- if ($row['block_end'] > time()) {
- $peers_array['block_end_string'] = $row['block_end_string'];
- } else {
- $peers_array['block_end_string'] = "";
- }
- } else {
- $peers_array['block_end_ignore_flag'] = "НЕТ";
- if ($row['block_end'] > time()) {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Аккаунт заблокирован до " . $row['block_end_string'] . "\n\n";
- return $messages_error_msg ;
- } else {
- $peers_array['block_end_string'] = "";
- }
- }
- $account_peers_count_max = $row['peers_count_max'];
- $peers_array['peers_count_max'] = $account_peers_count_max;
- if ($row['peers_count'] > $account_peers_count_max) {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Ранее был достигнут предел количества источников (" . $row['peers_count_max'] . ")!\n";
- return $messages_error_msg ;
- }
- if ($row['cycle_id'] > 0) {
- $cycle_id = $row['cycle_id'];
- } else {
- $cycle_id = 1;
- }
- $cron_flag = $row['cron_flag'];
- $cron_peers_limit = $row['cron_peers_limit'];
- $cron_peers_cycles = $row['cron_peers_cycles'];
- $cron_peer_messages_limit = $row['cron_peer_messages_limit'];
- }
- } else {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Не доступен список аккаунтов!" . "\n";
- return $messages_error_msg ;
- }
- // Инициализация переменных для статистики
- $stop_flag = 0;
- $operation_id = 2;
- $peers_array['cycle_id'] = $cycle_id;
- $peers_array['peers_count'] = 0;
- $peers_array['cycles'] = $peers_cycles;
- $peers_array['limit'] = $peer_messages_limit;
- $peers_array['peers'] = '';
- $peers_array['messages'] = 0;
- $peers_array['messages_all'] = 0;
- $peers_array['entities'] = 0;
- $peers_array['error'] = '';
- if ($type_run == 2) {
- if ($cron_flag == 1) {
- $peers_limit = $cron_peers_limit;
- $peers_cycles = $cron_peers_cycles;
- $peer_messages_limit = $cron_peer_messages_limit;
- $channel_id = 0;
- $peers_array['cycles'] = $peers_cycles;
- $peers_array['limit'] = $peer_messages_limit;
- } else {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Запуск задачи в кроне - отключен!" . "\n";
- return $messages_error_msg ;
- }
- }
- // Новая сессия MadelineProto
- // Тип запуска - руками или кроном
- switch ($type_run) {
- case 1:
- require_once 'vendor/autoload.php';
- break;
- case 2:
- require_once '/home/i/ifredspb/tg.icrud.ru/public_html/vendor/autoload.php';
- break;
- }
- $settings = [
- 'db' => [
- 'type' => 'mysql',
- 'mysql' => [
- 'host' => "localhost",
- 'port' => 3306,
- 'user' => "ifredspb_tg_log",
- 'password' => "GhbdtnDBbg5",
- 'database' => "ifredspb_tg_log",
- 'cache_ttl' => "+5 minutes",
- 'max_connections' => 45,
- 'idle_timeout' => 600,
- ]
- ]
- ];
- switch ($type_run) {
- case 1:
- switch ($account_id) {
- case 0:
- //$MadelineProto = new \danog\MadelineProto\API('session_0.madeline');
- $MadelineProto = new \danog\MadelineProto\API('session_0.madeline', $settings);
- break;
- case 1:
- //$MadelineProto = new \danog\MadelineProto\API('session_1.madeline');
- $MadelineProto = new \danog\MadelineProto\API('session_1.madeline', $settings);
- break;
- case 2:
- //$MadelineProto = new \danog\MadelineProto\API('session_2.madeline');
- $MadelineProto = new \danog\MadelineProto\API('session_2.madeline', $settings);
- break;
- case 3:
- //$MadelineProto = new \danog\MadelineProto\API('acc_3/session_3.madeline');
- $MadelineProto = new \danog\MadelineProto\API('acc_3/session_3.madeline', $settings);
- break;
- default:
- return "Ошибка выборки сессии!";
- break;
- }
- break;
- case 2:
- switch ($account_id) {
- case 0:
- //$MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_0.madeline');
- $MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_0.madeline', $settings);
- break;
- case 1:
- //$MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_1.madeline');
- $MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_1.madeline', $settings);
- break;
- case 2:
- //$MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_2.madeline');
- $MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/session_2.madeline', $settings);
- break;
- case 3:
- //$MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/acc_3/session_3.madeline');
- $MadelineProto = new \danog\MadelineProto\API('/home/i/ifredspb/tg.icrud.ru/public_html/acc_3/session_3.madeline', $settings);
- break;
- default:
- return "Ошибка выборки сессии!";
- break;
- }
- break;
- }
- //$MadelineProto->async(false);
- //$newSettings = [
- // 'db' => [
- // 'type' => 'mysql',
- // 'mysql' => [
- // 'max_connections' => 8,
- // ]
- // ]
- //];
- //$MadelineProto->updateSettings($newSettings);
- $MadelineProto->start();
- //$nowSettings = $MadelineProto->getSettings();
- //echo "<pre>";
- //var_dump ($nowSettings);
- //echo "</pre>";
- // Количество сообщений, внесенных в статистику ранее
- //$stat_messages_users_query = "SELECT messages_add FROM stat_messages_users ORDER BY id DESC LIMIT 1";
- //$stat_messages_users_result = mysqli_query($link, $stat_messages_users_query);
- //if ($stat_messages_users_result){
- // $row = mysqli_fetch_assoc($stat_messages_users_result);
- // if ($row['messages_add']) {
- // $peers_array['messages_prev'] = (int)$row['messages_add'];
- // }
- //}
- // Создание подготавливаемого запроса вставки сообщений
- $messages_insert_query = "INSERT INTO messages (account_id, peer_id, message_id, message, message_short, views, message_date, message_date_string, fwd_name, fwd_user_id, fwd_channel_id, fwd_channel_post, fwd_message_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- $messages_insert_stmt = mysqli_prepare($link, $messages_insert_query);
- $messages_insert2_query = "INSERT INTO messages (id, account_id, peer_id, message_id, message, message_short, views, message_date, message_date_string, fwd_name, fwd_user_id, fwd_channel_id, fwd_channel_post, fwd_message_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- $messages_insert2_stmt = mysqli_prepare($link2, $messages_insert2_query);
- // Создание подготавливаемого запроса вставки ссылок
- $entities_insert_query = "INSERT INTO entities (peer_id, message_id, offset, length, url, work_flag) VALUES (?, ?, ?, ?, ?, 0)";
- $entities_insert_stmt = mysqli_prepare($link, $entities_insert_query);
- // Создание подготавливаемого запроса обновления минимального номера скачанных сообщений
- $peer_requery_min_query = "UPDATE peers SET message_id_min = ? WHERE id = ?";
- $peer_requery_min_stmt = mysqli_prepare($link, $peer_requery_min_query);
- // Создание подготавливаемого запроса обновления максимального номера скачанных сообщений
- $peer_requery_max_query = "UPDATE peers SET message_id_max = ? WHERE id = ?";
- $peer_requery_max_stmt = mysqli_prepare($link, $peer_requery_max_query);
- // Создание подготавливаемого запроса обновления признака начала канала, окончания блокировки, ошибки скачивания и времени работы
- $peer_requery_begin_query = "UPDATE peers SET block_flag = ?, begin_flag = ?, block_end = ?, error_msg = ?, download_1_date = ?, download_1_date_string = ?, download_2_count = ?, download_2_date = ?, download_2_date_string = ?, download_last_date = ?, download_last_date_string = ? WHERE id = ?";
- $peer_requery_begin_stmt = mysqli_prepare($link, $peer_requery_begin_query);
- // Создание подготавливаемого запроса вставки статистики (полной, аккаунта) скачивания сообщений
- $stat_accounts_full_insert_query = "INSERT INTO stat_accounts_full (account_id, operation_id, peer_id, messages_count, error_msg, cycle_id) VALUES (?, ?, ?, ?, ?, ?)";
- $stat_accounts_full_insert_stmt = mysqli_prepare($link, $stat_accounts_full_insert_query);
- for ($i = 1; $i <= $peers_cycles; $i++) {
- $random = rand(100000, 2000000);
- usleep($random);
- $count_peers = 0;
- // Выбор источников для скачивания сообщений
- switch ($type_download) {
- case 1:
- if ($channel_id) {
- $peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_count, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND begin_flag = 0 AND account_id = " . $account_id . " AND id = " . $channel_id;
- } else {
- $peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_count, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND begin_flag = 0 AND account_id = " . $account_id . " ORDER BY created_at, id LIMIT " . $peers_limit;
- }
- break;
- case 2:
- if ($channel_id) {
- $peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND account_id = " . $account_id . " AND id = " . $channel_id;
- } else {
- //$peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_count, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND download_2_date > 0 AND account_id = " . $account_id . " ORDER BY download_2_count DESC, download_2_date, message_id_max DESC LIMIT " . $peers_limit;
- //$peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_count, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND download_2_date > 0 AND account_id = " . $account_id . " ORDER BY download_2_count DESC, download_last_date, download_2_date, message_id_max DESC LIMIT " . $peers_limit;
- $peers_select_query = "SELECT id, type, public_url, invite_url, username, title, begin_flag, message_id_min, message_id_max, join_flag, public_flag, download_1_date, download_1_date_string, download_2_count, download_2_date, download_2_date_string FROM peers WHERE public_flag = 1 AND block_flag = 0 AND join_flag = 1 AND download_2_date > 0 AND account_id = " . $account_id . " ORDER BY download_2_count DESC, download_last_date, download_2_date DESC LIMIT " . $peers_limit;
- }
- break;
- }
- $peers_select_result = mysqli_query($link, $peers_select_query);
- $peers_select_rows = mysqli_num_rows($peers_select_result);
- // Если нет источников для скачивания сообщений
- if (!$peers_select_rows) {
- if ($channel_id) {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Нет источников (" . $channel_id . ") для скачивания сообщений!" . "\n";
- } else {
- $messages_error_msg = date("Y-m-d H:i:s", time()) . ": (" . $account_id . ") Нет источников для скачивания сообщений!" . "\n";
- }
- return $messages_error_msg ;
- }
- while( $row = mysqli_fetch_assoc($peers_select_result) ){
- $random = rand(0, 2000000);
- usleep($random);
- $count_peers++;
- $peer_messages_count = 0;
- $peer_id = $row['id'];
- $peer_type = $row['type'];
- $peer_public_flag = $row['public_flag'];
- $peer_public_url = $row['public_url'];
- $peer_invite_url = $row['invite_url'];
- $peer_join_flag = $row['join_flag'];
- $peer_block_flag = 0;
- $peer_begin_flag = $row['begin_flag'];
- $peer_message_id_min = $row['message_id_min'];
- $peer_message_id_max = $row['message_id_max'];
- $peer_error_msg = '';
- $peer_block_end = 0;
- $peer_block_end_string = '';
- $peer_download_1_date = $row['download_1_date'];
- $peer_download_1_date_string = $row['download_1_date_string'];
- $peer_download_2_count = $row['download_2_count'];
- $peer_download_2_date = $row['download_2_date'];
- $peer_download_2_date_string = $row['download_2_date_string'];
- $peer_download_last_date = time();
- $peer_download_last_date_string = date("Y-m-d H:i:s", $peer_download_last_date);
- $message_id_min = $row['message_id_min'];
- $message_id_max = $row['message_id_max'];
- // echo "peer_id: " , $peer_id;
- // echo "<br>";
- // echo "peer_message_id_min: " , $peer_message_id_min;
- // echo "<br>";
- // echo "peer_message_id_max: " , $peer_message_id_max;
- // echo "<br>";
- switch ($type_download) {
- case 1:
- $peer_offset_id = $peer_message_id_min;
- break;
- case 2:
- $peer_offset_id = $peer_message_id_max + $peer_messages_limit + 1;
- break;
- }
- try {
- if ($peer_public_url) {
- $peer_join_url = $peer_public_url;
- $peer_messages_count_cycle = 0;
- $settings = array(
- 'peer' => $peer_join_url,
- 'offset_id' => $peer_offset_id,
- 'offset_date' => 0,
- 'add_offset' => 0,
- 'limit' => $peer_messages_limit,
- 'max_id' => 0,
- 'min_id' => 0,
- 'hash' => 0,
- );
- $messagesfull = $MadelineProto->messages->getHistory($settings);
- // Выбор и внесение сообщений в базу
- $messages = $messagesfull['messages'];
- $message_id = 0;
- //$message_id_min = 0;
- //$message_id_max = 0;
- $messages_count = 0;
- foreach ($messages as $message) {
- if ($message['_'] == 'message') {
- $message_id = $message['id'];
- if (($type_download == 1) OR ($type_download == 2 AND $message_id > $peer_message_id_max)) { //
- $messages_count++;
- if ($type_download == 1) {
- $peer_download_1_date = $message['date'];
- $peer_download_1_date_string = date("Y-m-d H:i:s", $peer_download_1_date);
- if ($message_id_min == 0) {
- //echo $peer_id;
- //echo "<p>";
- $peer_download_2_date = time ();
- $peer_download_2_date_string = date("Y-m-d H:i:s", $peer_download_2_date);
- }
- if ($message_id < $message_id_min OR $message_id_min == 0) {
- $message_id_min = $message_id;
- }
- }
- if ($message_id > $message_id_max) {
- $message_id_max = $message_id;
- $peer_download_2_date = $message['date'];
- $peer_download_2_date_string = date("Y-m-d H:i:s", $peer_download_2_date);
- }
- $message_date = $message['date'];
- $message_date_string = date("Y-m-d H:i:s", $message_date);
- if (array_key_exists('views', $message)) {
- $message_views = $message['views'];
- } else {
- $message_views = 0;
- }
- $message_message = $message['message'];
- $message_message_short = substr($message_message, 0, 255);
- $message_fwd_name = '';
- $message_fwd_user_id = 0;
- $message_fwd_channel_id = 0;
- $message_fwd_channel_post = 0;
- $message_fwd_message_date = 0;
- if (array_key_exists('fwd_from', $message)) {
- $message_fwd_from_array = $message['fwd_from'];
- if (array_key_exists('from_id', $message_fwd_from_array)) {
- if ($message_fwd_from_array['from_id']['_'] == 'peerChannel') {
- $message_fwd_channel_id = $message_fwd_from_array['from_id']['channel_id'];
- if (array_key_exists('channel_post', $message_fwd_from_array)) {
- $message_fwd_channel_post = $message_fwd_from_array['channel_post'];
- }
- } else if ($message_fwd_from_array['from_id']['_'] == 'peerUser') {
- $message_fwd_user_id = $message_fwd_from_array['from_id']['user_id'];
- }
- } else if (array_key_exists('from_name', $message_fwd_from_array)) {
- $message_fwd_name = $message_fwd_from_array['from_name'];
- }
- $message_fwd_message_date = $message_fwd_from_array['date'];
- }
- // Внесение сообщения
- try {
- mysqli_stmt_bind_param($messages_insert_stmt, "iiissiissiiii", $account_id, $peer_id, $message_id, $message_message, $message_message_short, $message_views, $message_date, $message_date_string, $message_fwd_name, $message_fwd_user_id, $message_fwd_channel_id, $message_fwd_channel_post, $message_fwd_message_date);
- $messages_insert_result = mysqli_stmt_execute($messages_insert_stmt);
- $messages_insert_id = mysqli_insert_id($link);
- $peer_messages_count++;
- $peer_messages_count_cycle++;
- $peers_array['messages']++;
- } catch (Exception $e) {
- $messages_insert_error = $e->getMessage();
- return "Ошибка вставки сообщения: " . $messages_insert_error;
- }
- // 2 Внесение сообщения
- try {
- mysqli_stmt_bind_param($messages_insert2_stmt, "iiiissiissiiii", $messages_insert_id, $account_id, $peer_id, $message_id, $message_message, $message_message_short, $message_views, $message_date, $message_date_string, $message_fwd_name, $message_fwd_user_id, $message_fwd_channel_id, $message_fwd_channel_post, $message_fwd_message_date);
- $messages_insert2_result = mysqli_stmt_execute($messages_insert2_stmt);
- } catch (Exception $e) {
- $messages_insert_error = $e->getMessage();
- return "Ошибка вставки сообщения 2: " . $messages_insert_error;
- }
- // Внесение ссылок из сообщения в базу
- if (isset($message['entities'])) {
- $message_entities = $message['entities'];
- foreach ($message_entities as $entity) {
- if ($entity['_'] == "messageEntityTextUrl") {
- $entity_offset = $entity['offset'];
- $entity_length = $entity['length'];
- $entity_url = $entity['url'];
- try {
- mysqli_stmt_bind_param($entities_insert_stmt, "iiiis", $peer_id, $message_id, $entity_offset, $entity_length, $entity_url);
- $entities_insert_entity = mysqli_stmt_execute($entities_insert_stmt);
- $peers_array['entities']++;
- } catch (Exception $e) {
- $entities_insert_error = $e->getMessage();
- return "Ошибка вставки ссылки: " . $entities_insert_error;
- }
- }
- }
- }
- }
- }
- }
- if ($type_download == 1) {
- // Обновление данных в таблице источников
- if ($message_id_min) {
- if ($message_id_min < $peer_message_id_min OR $peer_message_id_min == 0) {
- mysqli_stmt_bind_param($peer_requery_min_stmt, "ii", $message_id_min, $peer_id);
- $peer_requery_min_result = mysqli_stmt_execute($peer_requery_min_stmt);
- }
- } else {
- $peer_begin_flag = 1;
- }
- if ($message_id_max > $peer_message_id_max) {
- mysqli_stmt_bind_param($peer_requery_max_stmt, "ii", $message_id_max, $peer_id);
- $peer_requery_max_result = mysqli_stmt_execute($peer_requery_max_stmt);
- }
- }
- if ($type_download == 2) {
- if ($messages_count) {
- if ($message_id_max > $peer_message_id_max) {
- mysqli_stmt_bind_param($peer_requery_max_stmt, "ii", $message_id_max, $peer_id);
- $peer_requery_max_result = mysqli_stmt_execute($peer_requery_max_stmt);
- }
- }
- }
- if ($type_download == 1) {
- // Добрались до начала источника - если не удалось скачать сообщения
- if (!$peer_messages_count_cycle) {
- $peer_begin_flag = 1;
- }
- }
- }
- } catch (Exception $e) {
- $peer_error_msg = $e->getMessage();
- if ($peers_array['error']) {
- $peers_array['error'] = $peers_array['error'] . ", \n" . $peer_id . ": " . $peer_error_msg;
- } else {
- $peers_array['error'] = $peer_id . ": " . $peer_error_msg;
- }
- $peer_error_msg_check = 'FLOOD_WAIT';
- $message_download_error_pos = strpos($peer_error_msg, $peer_error_msg_check);
- if ($message_download_error_pos !== false) {
- $peer_block_end = time() + substr($peer_error_msg, 11);
- $peer_block_end_string = date("Y-m-d H:i:s", $peer_block_end);
- $peers_array['error'] = $peers_array['error'] . " (" . $peer_block_end_string . ")";
- $stop_flag = 1;
- } else {
- $peer_error_msg_check1 = 'This peer is not present in the internal peer database';
- $message_download_error_pos1 = strpos($peer_error_msg, $peer_error_msg_check1);
- if ($message_download_error_pos1 !== false) {
- $peer_block_flag = 1;
- } else {
- $peer_error_msg_check2 = 'CHANNEL_INVALID';
- $message_download_error_pos2 = strpos($peer_error_msg, $peer_error_msg_check2);
- if ($message_download_error_pos2 !== false) {
- $peer_block_flag = 2;
- } else {
- $peer_error_msg_check3 = 'Did the context die';
- $message_download_error_pos3 = strpos($peer_error_msg, $peer_error_msg_check3);
- if ($message_download_error_pos3 !== false) {
- $stop_flag = 1;
- }
- }
- }
- }
- }
- $peer_download_2_count = $messages_count;
- // if ($peer_id = 1126727264) {
- // echo $peer_download_2_date_string;
- // echo "<br>";
- // echo $peer_download_last_date_string;
- // echo "<br>";
- // echo "<br>";
- // }
- // Обновление признака начала канала и окончания блокировки
- mysqli_stmt_bind_param($peer_requery_begin_stmt, "iiisisiisisi", $peer_block_flag, $peer_begin_flag, $peer_block_end, $peer_error_msg, $peer_download_1_date, $peer_download_1_date_string, $peer_download_2_count, $peer_download_2_date, $peer_download_2_date_string, $peer_download_last_date, $peer_download_last_date_string, $peer_id);
- $peer_requery_begin_result = mysqli_stmt_execute($peer_requery_begin_stmt);
- // Внесение статистики (аккаунта, полной) по скачиваемым сообщениям
- mysqli_stmt_bind_param($stat_accounts_full_insert_stmt, "iiiisi", $account_id, $operation_id, $peer_id, $peer_messages_count, $peer_error_msg, $cycle_id);
- $stat_accounts_full_insert_result = mysqli_stmt_execute($stat_accounts_full_insert_stmt);
- // Подсчет количества источников и сообщений в данном цикле данного аккаунта
- $stat_accounts_full_query = "SELECT peer_id, SUM(messages_count) AS messagescount FROM stat_accounts_full WHERE account_id = " . $account_id . " AND cycle_id = " . $cycle_id . " GROUP BY peer_id";
- $stat_accounts_full_result = mysqli_query($link, $stat_accounts_full_query);
- $stat_accounts_full_rows = mysqli_num_rows($stat_accounts_full_result);
- $account_peers_count = 0;
- $account_messages_count = 0;
- if ($stat_accounts_full_rows) {
- while( $row = mysqli_fetch_assoc($stat_accounts_full_result) ){
- $account_peers_count++;
- $account_messages_count = $account_messages_count + $row['messagescount'];
- }
- }
- $peers_array['peers_count'] = $account_peers_count;
- // Проверка наличия записи о текущем цикле данного аккаунта
- $stat_accounts_cycles_query = "SELECT id FROM stat_accounts_cycles WHERE account_id = " . $account_id . " AND cycle_id = " . $cycle_id;
- $stat_accounts_cycles_result = mysqli_query($link, $stat_accounts_cycles_query);
- $stat_accounts_cycles_rows = mysqli_num_rows($stat_accounts_cycles_result);
- if ($stat_accounts_cycles_rows > 0) {
- } else {
- $cycle_begin = time();
- $cycle_begin_string = "'" . date("Y-m-d H:i:s", $cycle_begin) . "'";
- $stat_accounts_cycles_begin_insert_query = "INSERT INTO stat_accounts_cycles (account_id, cycle_id, peers_last, cycle_begin, cycle_begin_string) VALUES ($account_id, $cycle_id, $count_peers, $cycle_begin, $cycle_begin_string)";
- $stat_accounts_cycles_begin_insert_result = mysqli_query($link, $stat_accounts_cycles_begin_insert_query);
- }
- // Обновление статистики (аккаунта, по циклам)
- $stat_accounts_cycles_requery_end_query = "UPDATE stat_accounts_cycles SET peers_count = " . $account_peers_count . ", messages_count = " . $account_messages_count . " WHERE account_id = " . $account_id . " AND cycle_id = " . $cycle_id;
- $stat_accounts_cycles_requery_end_result = mysqli_query($link, $stat_accounts_cycles_requery_end_query);
- // Если FLOOD_WAIT - внесение и обновление статистики (аккаунта) по циклам
- if ($peer_block_end) {
- $cycle_end = $peer_block_end;
- $cycle_end_string = date("Y-m-d H:i:s", $cycle_end);
- $stat_accounts_cycles_requery_end2_query = "UPDATE stat_accounts_cycles SET error_msg = '" . $peer_error_msg . "', cycle_end = " . $cycle_end . ", cycle_end_string = '" . $cycle_end_string . "' WHERE account_id = " . $account_id . " AND cycle_id = " . $cycle_id;
- $stat_accounts_cycles_requery_end2_result = mysqli_query($link, $stat_accounts_cycles_requery_end2_query);
- $cycle_id++;
- $cycle_begin = $peer_block_end + 1;
- $cycle_begin_string = "'" . date("Y-m-d H:i:s", $cycle_begin) . "'";
- $stat_accounts_cycles_begin_insert_query = "INSERT INTO stat_accounts_cycles (account_id, cycle_id, cycle_begin, cycle_begin_string) VALUES ($account_id, $cycle_id, $cycle_begin, $cycle_begin_string)";
- $stat_accounts_cycles_begin_insert_result = mysqli_query($link, $stat_accounts_cycles_begin_insert_query);
- $accounts_query = "UPDATE accounts SET cycle_id = " . $cycle_id . ", peers_count = " . $account_peers_count . ", block_end = " . $peer_block_end . ", block_end_string = '" . $peer_block_end_string . "' WHERE id = " . $account_id;
- $accounts_result = mysqli_query($link, $accounts_query);
- } else {
- $accounts_query = "UPDATE accounts SET cycle_id = " . $cycle_id . ", peers_count = " . $account_peers_count . " WHERE id = " . $account_id;
- //$accounts_query = "UPDATE accounts SET cycle_id = " . $cycle_id . ", peers_count = " . $account_peers_count . ", block_end = " . $peer_block_end . ", block_end_string = '" . $peer_block_end_string . "' WHERE id = " . $account_id;
- $accounts_result = mysqli_query($link, $accounts_query);
- }
- // Если $stop_flag (FLOOD_WAIT или 'Did the context die') - обновление в таблице аккаунтов и выход из циклов (каналов и циклов перебора)
- if ($stop_flag) {
- $peers_requery_block_query = "UPDATE accounts SET cycle_id = " . $cycle_id . ", block_end = " . $peer_block_end . ", block_end_string = '" . $peer_block_end_string . "' WHERE id = " . $account_id;
- $peers_requery_block_result = mysqli_query($link, $peers_requery_block_query);
- break;
- break;
- }
- }
- // Обновление статистики (аккаунта, по циклам, последнего количества каналов)
- $stat_accounts_cycles_requery_last_query = "UPDATE stat_accounts_cycles SET peers_last = " . $count_peers . " WHERE account_id = " . $account_id . " AND cycle_id = " . $cycle_id;
- $stat_accounts_cycles_requery_last_result = mysqli_query($link, $stat_accounts_cycles_requery_last_query);
- if ($peers_array['peers']) {
- $peers_array['peers'] = $peers_array['peers'] . ", " . $count_peers;
- } else {
- $peers_array['peers'] = $count_peers;
- }
- }
- $peers_array['peers'] = $peers_limit . ": " . $peers_array['peers'];
- // Количество сообщений, скачанных всего
- $account_messages_count_all_query = "SELECT COUNT(id) AS messages_count FROM messages";
- $account_messages_count_all_result = mysqli_query($link, $account_messages_count_all_query);
- $account_messages_count_all = 0;
- $account_messages_count_now = $peers_array['messages'];
- if ($account_messages_count_all_result){
- $row = mysqli_fetch_assoc($account_messages_count_all_result);
- if ($row['messages_count']) {
- $account_messages_count_all = (int)$row['messages_count'];
- $peers_array['messages_all'] = (int)$row['messages_count'];
- }
- }
- // Отключение от базы
- mysqli_close($link);
- return $peers_array;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement