Мы отправляем запрос и получаем ответ через Call Back когда наш запрос готов.
Допустим мы отправили 20 запросов, и мгновенно мы получили ответы через Call Back, далее я передаю параметры в ф-цию.
Ф-ция сначала делает выборку из БД и выбирает IP из БД, который далее мы подставляем в CURL PROXY параметр.
Проблема в том, что сайт, к которому делаем CURL запрос возвращает пустоту после 2-3 запросов, по всей видимости из-за того, что в течении 1-5 секунд с 1 IP делается 20 запросов.
Соответственно, приходим к выводу, что мы должны как-то отмечать IP который используется в текущий момент для отправки запроса и для других 19 выбирать другие IP адреса.
В БД в таблице IP создал поле
USED
и когда делаем выборку IP я добавил условие, чтобы он выбирал только те, которые = 0, но как сделать пометку о том, что мы забрали 1 IP ??
Делать UPDATE в бд каждый раз? это будет выглядеть так:
выбрали 111.111.111.10
сделали UPDATE set USED = 1 where ....
через 0,01 секунду делаем CURL запрос, на который получаем ответ через 1 секунду
делаем снова UPDATE где устанавливаем USED 0
Это нам придется для 20 запросов сделать 40 обращений в БД - как-то не очень получается, насколько это нагрузит сервер если принимать call backи каждую 1 минуту в размере 20 шт............
К тому же, я хочу сделать так, чтобы USED менялся не когда curl запрос завершен, а когда прошло 15 секунд с момента завершения CURLа, иначе приходим к тому от чего бежали, если изменения в БД будут вноситься так быстро, то 1 IP может использоваться много раз в течении 5 секунд.
Подскажите, что можно придумать в моем случае?) Есть варианты без 40 запросов в БД? Если нет, то как делать UPDATE чтобы не получалось что в течении 5 секунд 1 IP используется несколько раз.