[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дилемма: большой SQL запрос, или 2 запроса + php
Страницы: 1, 2, 3
Zzepish
Пилю антиддос. Такая дилема: запилить один SELECT запрос, потом проверку на php, потом еще один запрос (update), или все запилить одним большим sql запросом (включая вычисления)
sergeiss
Хранимые процедуры/триггеры никак, что ли, не подходят? Это в любом случае должно быть быстрее, чем 2 запроса с промежуточной обработкой в ПХП.

Давай побольше инфы.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Zzepish
sergeiss
user posted image
ВОт таблица.
Механика такая:
идет запрос- если возвращает NULL, то пихаем данные:
ip (ip)
query_count (количество запросов за эту секунду)
ban_to(бан до)
action (когда было последнее действие- time());

Если есть уже, то проверяем! отнимаем ban_to-time(). Если больше нуля- то die, если нет, то проверяем: если action==time() то {если
query_count+1>число_запросов_в_секунду(настраивается админом) то даем бан на определенное время, записываем данные в базу и пишем die}
В противном случае просто сбрасываем счетчик query_count
Игорь_Vasinsky
у тебя хостинг или сервер?


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Zzepish
Игорь_Vasinsky
у меня cms =)
А куда я ее ставить буду- еще не знаю
redreem
большой запрос
Zzepish
redreem
просто я опасаюсь- а база не рухнет?
redreem
Zzepish
нуу... без конкретики сложно сказать smile.gif но при "прочих равных" я бы выбрал большой запрос, чем их 2 smile.gif
Zzepish
redreem
спасибо) теперь нкужно его попробовать написать biggrin.gif
Guest
Цитата (Zzepish @ 29.10.2013 - 19:09)
Пилю антиддос

Цитата (Zzepish @ 29.10.2013 - 19:09)
php

Взаимоисключающие параграфы. На php можно только от школьника с LOIC отбиться.
Настраивай веб сервер+система и\или сетевое оборудование.
Zzepish
Guest
ну, как снизить нагрузку- тоже вариант
andrey888
Как составишь большой запрос .... покажи публике ..
Не факт что он будет лучше чем 2 простых запроса к БД (ИМХО) wink.gif

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Zzepish
Ребят, пишу так:
		IF((SELECT *
FROM
`antiddos`
WHERE
`ip`="'.$_SERVER['REMOTE_ADDR'].'",
)
IS NULL,SET var:=1, SET var:=2)

Но беда в том. что выдает ошибку. Куда покопать, чтоб решить такую задачу?
Guest
UPDATE my_table a
SET IF((SELECT (b.query_count+1) as query_count FROM my_table b WHERE b.ban_to - NOW() > 0) > число_запросов_в_секунду), ban_to = NOW()+5дней, query_count=0) WHERE a.id=b.id;
Guest
UPDATE
antiddos as a,
(

SELECT
(b.query_count+1) as query_count
FROM antiddos WHERE ban_to - NOW() > 0
) AS b
SET
IF(b.query_count > число запросов в секунду, a.ban_to = NOW()+5дней, a.query_count=0)
WHERE a.ip=b.ip


Наверное более точно будет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.