Здравствуйте уважаемые форумчане и администрация!
Пробую создать один проект и все время мучаюсь в догадках то того, то сего. А в последнее время вообще поймал себя на мысли что я окончательно запутался и не могу понять как правильно организовывать свой проект. Поэтому хотелось бы от знающих людей услышать как устроена архитектура 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? То в таком случае могут не успеть догрузится и/или перепутатся какие-либо данные одного Инстанса с другим? В этом основная болезнь многопотока?
Благодарю за внимание и отдельная благодарность людям которые дочитают всю эту с трудом структурированую информацю, сумеют разобратся в мной написанном да еще и поправят в тех местах где я что-то недопонял или дополнят в тех местах где я что-то упустил из-за невежества.
С уважением, Олег.
Пробую создать один проект и все время мучаюсь в догадках то того, то сего. А в последнее время вообще поймал себя на мысли что я окончательно запутался и не могу понять как правильно организовывать свой проект. Поэтому хотелось бы от знающих людей услышать как устроена архитектура 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? То в таком случае могут не успеть догрузится и/или перепутатся какие-либо данные одного Инстанса с другим? В этом основная болезнь многопотока?
Благодарю за внимание и отдельная благодарность людям которые дочитают всю эту с трудом структурированую информацю, сумеют разобратся в мной написанном да еще и поправят в тех местах где я что-то недопонял или дополнят в тех местах где я что-то упустил из-за невежества.
С уважением, Олег.