@gfnbdvs файл называться как угодно.Ресурс "из файла".В проге используем кубик прокси...
Умное использование прокси
-
Всем привет, можно ли так сделать чтобы например 3 разных проекта, брали прокси из 1 файла? Самое главное чтобы 1 прокси не использовалась одновременно в 2 или более проектах?
-
@xiniy22281
Тогда нужно сделать 1 общую базу. Это может быть файл или бд. Я бы посоветовал файл, если это на одном компьютере. Дописывайте в файл последний используемый прокси. В каждом проекте читайте этот файл и получайте текущую и предыдущую строку (если потребуется). Если текущий прокси равен текущей или предыдущей строке, то брать другой прокси. Очищайте этот файл при синхронном запуске 3-х проектов или проверяйте файл на последнее обновление -
РЕШЕНИЕ: Создаём в бд 3 колонки, id | proxy | work
В поле work указываем 0 либо 1. 0 = прокси свободна, 1 = прокси в работе.
При запуске софта, он ищёт в таблице прокси с значение 0. Устанавливает значение в столбце work - 1, при окончании работы скрипт ставит 0. -
@xiniy22281 said in Умное использование прокси:
при окончании работы скрипт ставит 0.
а если поток закончится до установки обратно 0?)
-
@tet-vivi Но даже если есть, можно создать ещё один столбец, добавлять туда время когда софт взял прокси, и например 1 поток работает в среднем 5 минут, и если прокси не освободилась через 7 минут, то поставить ноль и сразу же взять прокси ;)
-
@xiniy22281 said in Умное использование прокси:
@tet-vivi Таковых проблем в скриптах не имеется :)
Такая проблема можно возникнуть, просто банально если сервер будет перезагружен с работающим скриптом. Вначале работы скрипта стоит обнулять эти данные.
-
В варианте с базой данных тогда неплохо бы еще добавить колонку "ts", куда писать таймстамп.
И в запросе забирать проксю примерно так:
SELECT * FROM proxies WHERE work=1 ORDER BY ts ASC LIMIT 1При взятии соотвественно обновлять таймстамп и work=1.
И блокировку транзакции надо не забыть сделать, чтобы одновременно разные потоки не забирали одну проксю.