У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Вопросы по базе
-
Появилась пара вопросов.
Как писать в базу в многопотоке, например в 100 потоков. по 100 раз переписывается первая строка, вторая, третья и т.д. (использование глобальной переменной для id записи ? не могу придумать как реализовать)
Как получать для каждого потока свою строку и отрабатывать ее, разбив на переменные по столбацам -
@artihorror said in Вопросы по базе:
Появилась пара вопросов.
Как писать в базу в многопотоке, например в 100 потоков. по 100 раз переписывается первая строка, вторая, третья и т.д. (использование глобальной переменной для id записи ? не могу придумать как реализовать)
Как получать для каждого потока свою строку и отрабатывать ее, разбив на переменные по столбацам- Читаем мануал. http://wiki.bablosoft.com/doku.php?id=ru:tutorial3 Обычно, после его прочтения, все становится намного понятнее.
- Конкретизируйте вопрос или опишите задачу(что есть на входе и что должно быть на выходе) и выложите пример скрипта. Иначе сложно понять, какое решение подойдет для Вас лучше всего.
- Ну а в целом, для добавления записи используем функцию Вставить запись. Чтобы изменить запись, нужен ее id, который содержится в конце строки, получаемой на выходе работы функции Получить записи
-
@artihorror Если получаете запись через ресурс, то просто используете "Изменить Запись", софт сам выберет запись которая была получена последняя.
Если получаете запись через запрос, то последним элементом идет ее ид и в действие "Изменить Запись" нужно передать именно этот ид.
В туториале есть пример, как сделать многопоточный чеккер аккаунтов, там именно это и делается http://wiki.bablosoft.com/doku.php?id=ru:tutorial3