От этого варианта ушёл и приходить снова к нему- не хочу. Да, для регеров\спамилок линейное программирование оч подходит- не нужны сложные перенаправления, переопределения, наследование и тд. И намного проще и, следовательно, надёжнее- вариант, что будет какая нить ошибка меньше, чем когда полно сложных классов. И мультикурл не могу назвать оч хорошей идеей- глючит периодически и создаёт иллюзию нагромождённости.
НО, когда писал регеры, часто наступал на одни и те же грабли. Хотя опыт у меня не богатый да и кодераст я хреновый. Ведь что предоставляет из себя скрипт- это примерно блоки: «подготовка»-«парсинг»-«капча»-«пост»…. И часто я не отделят их, кроме как комментарием, да и то не всегда, так что всё писалось в кучу, при больших объёмах трудно было что-то понять. И если требуется написать что-то большее чем просторегер- напр. создание доров на
различных хостингах, то это нужно думать, как лучше.
Так что решил написать класс, в основном основываясь на нужды регеров. Долго шёл, думая что нужно, перепробовал кучу говноклассов. Естественно с хорошими наработками никто не делился. Оч. понравилось такое,
PHP:
$multicurl->parse1()->post1()->parse2()->post2();
Оч. наглядно и понятно что за чем следует. Но, кода не было, и я не понимал, если, к примеру, нужно идти по другой цепочке, в зависимости от результата, то что ж делать?
Так что создал такой концепт- каждый скрипт (не обязательно регер, может парсер, спамер…) представляет из себя отдельный класс. Каждая функция возвращает массив-задание, в котором указана следующая функция, которой будет передан результат. Если возвращён массив в котором массивов заданий несколько - то, класс копируется и создаётся ещё N потоков. Для мультикурла это вообще идеальный вариант - просто создав кучю объектов, не надо заботься о всяких flock’ах и не боятся перепутать данные, которые мы отправляли вначале и получили в конце. Всё наглядно и более просто- функция для подготовки данных, функця для парсинга1, для отправки пост данных2, куча простых функций которые обрабатывают результат. Так что не надо искать по всему коду, где результат записывается в базу и пытаться найти переменные, которые в базу попадают, нужно просто найти функцию save(), и при желании переопределить её.
Для наблюдения за отдельным потоком, долго думал, но остановился пока на обычном js- формируется таблица, в которой каждая строка- один поток. И в классе идёт печать js кода
<script>modify(id, ‘Классное сообщение №1 для потока id’)</script>. Это хорошо для наблюдения за работой, но ошибки так не отловишь. Так что сделал функцию дебага- запись каждой страницы, заголовков, данных курл в отдельную папку для отдельного потока. Добавил сюда ещё sleep, антикапчю, генерацию заголовков, режимов прокси 5 штук…- получилось довольно прилично.
---------------------
Другое, обращаясь к теме выбора демона, уже отказался от этой идеи. Решил делать с помощью iframe- просто печать нужных окон и одновременный запуск.