query("SET NAMES 'utf8'"); $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $_serviceList = [ 1 => 'avito', 2 => 'cian', 3 => 'yandex', 4 => 'domclick', ]; $arrayErrors = array(); $users = array(); $objects = array(); $usersIds = array(); $objectIds = array(); $dateTime = date('Y-m-d H:i:s', strtotime('-1 hour')); $sql = "SELECT * FROM ads_stats WHERE agency_id > 0 and is_error = 1 AND is_manual=0 AND processed_at > '{$dateTime}'"; //echo $sql; $q = $pdo->query($sql, true); $row = $pdo->num_rows($q); if($row > 0){ //echo $row; while ($r = $pdo->fetch_assoc($q)){ $sql_error = "SELECT id FROM object_error_advert_notis WHERE object_id = {$r['object_id']} AND service_id = {$r['service_id']} AND agency_id = {$r['agency_id']}"; $q_error = $pdo->query($sql_error, true); if($pdo->num_rows($q_error) == 0){ if($r['object_id'] > 0){ $arrayErrors[] = $r; $objectIds[] = $r['object_id']; } } } if(empty($objectIds)) die(); $sql_obj = "SELECT id_add_user, id, adres FROM objects WHERE id in (".implode(',',$objectIds).") LIMIT 1000000 OPTION max_matches=1000000"; $q_obj = $db_sphinx->query($sql_obj); while($r_obj = $db_sphinx->fetch_assoc($q_obj)){ $user_id = 0; $user_id = (int)$r_obj['id_add_user']; if($user_id > 0){ $objects[$r_obj['id']] = $r_obj; $usersIds[] = $user_id; } } $usersIds = array_unique($usersIds); if(empty($usersIds)) die(); $sql_user = "SELECT * FROM users WHERE id in (".implode(',', $usersIds).")"; $q_user = $pdo->query($sql_user); while($r_user = $pdo->fetch_assoc($q_user)){ $users[$r_user['id']] = $r_user; } $Telega = new Telegram(false, $pdo); $max = new MaxClass(); foreach($arrayErrors as $error){ $object_id = 0; $user_id = 0; if(isset($objects[$error['object_id']])){ $object_id = (int)$error['object_id']; $user_id = (int)$objects[$object_id]['id_add_user']; $errors = ''; $send = 0; $send_max = 0; $is_read = 1; $errors = addslashes($error['errors']); if($object_id > 0 && $user_id > 0){ if(isset($users[$user_id])){ if($users[$user_id]['telegramm_notice'] > 0 && $users[$user_id]['telegramm_chat_id'] > 0){ $chatId = $users[$user_id]['telegramm_chat_id']; $text = "Ошибка при публикации объекта ID {$object_id}"; $text .= "\nАдрес: ".$objects[$object_id]['adres']; $text .= "\nПроверьте заполнение данных объекта"; $Telega->send($text, $chatId); $send = 1; } if($users[$user_id]['max_notice'] > 0 && $users[$user_id]['max_user_id'] > 0){ $userMaxId = $users[$user_id]['max_user_id']; $text = "Ошибка при публикации объекта ID {$object_id}"; $text .= "\nАдрес: ".$objects[$object_id]['adres']; $text .= "\nПроверьте заполнение данных объекта"; $max->send_messages_to_user($userMaxId, $text); $send = 1; } $sql_in_error = "INSERT INTO object_error_advert_notis SET object_id={$object_id}, service_id = {$error['service_id']}, errors='{$errors}', agency_id = {$error['agency_id']}, processed_at = '{$error['processed_at']}', user_id = {$user_id}, send = $send, send_max = $send_max, is_read = {$is_read}"; // echo $sql_in_error."\n"; $pdo->query($sql_in_error); } } } } }