Все с начала или как все происходит?

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Здравствуйте уважаемые форумчане и администрация!

Пробую создать один проект и все время мучаюсь в догадках то того, то сего. А в последнее время вообще поймал себя на мысли что я окончательно запутался и не могу понять как правильно организовывать свой проект. Поэтому хотелось бы от знающих людей услышать как устроена архитектура ZennoPoster'а.

Недавно прочел вот такую интересную для меня тему - http://zennolab.com/discussion/threads/xvatit-ehto-terpet-optimiziruj-shablon-zenno-pk-uvelich-proizvoditelnost-zadach.27708/ , и немного ситуация для меня начала прояснятся.

Итак вопрос: каким же образом запускается проект в ЗенноПостере?

Насколько я понимаю сначала создается процесс "base.exe", затем, в зависимости от настроек ЗенноПостера (а конкретней количества выставленых потоков и количества потоков в процессе), в процессе "base.exe" (который как я понимаю является по сути браузером) создаются потоки (они же, насколько я понимаю являются связкой Инстанса и Проекта в ЗенноПостере). А проекты (project) это просто набор данных и исполняемых инструкций.

То есть instance отвечает за настройки браузера (кукисы, локальные хранилища и т.п.), а проект отвечает за набор инструкций которые могут быть исполнены под любым из instance'ов. Правильно я понимаю?

В статье выше писало что-то о перезагрузке Инстанса для освобождения памяти и т.д.. Вопрос, а почему память RAM все время кушается все больше и больше? Почему Инстанс надо перезагружать? В обычном браузере насколько я понимаю большинство данных (куки, локальное хранилище, временные файлы) сохраняется на жестком диске, а не в оперативке. Чем именно Инстанс забивает оперативку?

И еще вопрос. Если я хочу запустить 10 потоков (копий) проекта под десятью разными настройками браузера (ЮзерАгенты разные, кукисы, прокси), то мне надо 10 инстансов и один проект. Правильно я понимаю? А чтобы у меня данные (например прокси) между собой ошибочно не пересекались, то лучше всего выставить "количество потоков в одном процессе" = 1. В другом же случае если кол-во потоков на процесс будет 2 или 3, то условному браузеру base.exe придется каждый раз переключать данные инстансов и работать поочередно, но при этом переменная $instance в потоке будет для каждого из потоков отдельная, т.е. $instance не будут пересекаться.

То есть проект я пишу спокойно как однопоточный и, если я выставлю "количество потоков в одном процессе" = 1, то грубо говоря у меня будут создаваться 10 однопоточных браузеров, каждый из которых отвечает отдельно за себя и только. Никакие данные в таком случае искажатся не будут ником образом (разве RAM не хватит и все закрашится к чертям).

А вот если "количество потоков в одном процессе" = 3? То в таком случае могут не успеть догрузится и/или перепутатся какие-либо данные одного Инстанса с другим? В этом основная болезнь многопотока?

Благодарю за внимание и отдельная благодарность людям которые дочитают всю эту с трудом структурированую информацю, сумеют разобратся в мной написанном да еще и поправят в тех местах где я что-то недопонял или дополнят в тех местах где я что-то упустил из-за невежества.

С уважением, Олег.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)