Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

5 часов назад, Rassol2 сказал:

и как вам это поможет ?

Авторизация не слетает, если как минимум 1 раз в 1,5 часа делать хотя бы 1 запрос на сайте поставщика. Видимо после каждого запроса обнуляется счетчик очищения сессии куки.

5 часов назад, Rassol2 сказал:

Допустим будет такой вариант, сегодня отработал модуль. А завтра нужно опять идти вручную авторизоваться.

Я уже протестировал все работает, если парсить круглосуточно. Я не могу другие задании крон запустить, т.к. одно задание должно парсить без остановки!

 

5 часов назад, Rassol2 сказал:

Так что нет, тьако возможности нету.

Очень прошу, реализуй пожалуйста возможность запускать несколько заданий крон одновременно. Ведь не проблема запускать несколько sp_cron.php. Главное чтобы каждому заданию свой крон соответствовал. Я бы сам покопался, но ты закубил sp_cron.php

 

5 часов назад, Rassol2 сказал:

2. Буду делать систему определения авторизованный модуль или нет. И если нет что бы модуль сам мог идти авторизоваться.

Можно поподробней? Модуль сам будет подставлять логин и пароль в форме авторизации?

Надіслати
Поділитися на інших сайтах


11 минут назад, ILexus сказал:

Я уже протестировал все работает, если парсить круглосуточно. Я не могу другие задании крон запустить, т.к. одно задание должно парсить без остановки!

Это не решение вашей задачи.
Я бы такой подход охарактеризовал майоратством. Это когда вы запачкали рубашку и вместо того что бы ее стирать, идете покупаете новую )))
 

13 минут назад, ILexus сказал:

Очень прошу, реализуй пожалуйста возможность запускать несколько заданий крон одновременно. Ведь не проблема запускать несколько sp_cron.php. Главное чтобы каждому заданию свой крон соответствовал. Я бы сам покопался, но ты закубил sp_cron.php

Покопайте.
Я за кубил его потому что думал реализовать много разных ништячков. Но по факту там нету ничего связанного с логикой модуля. Вообще ничего.
Сейчас это файл который просто понимает запрос как index.php
А вся логика лежит в /admin/model/catalog/simplepars.php
После того как вы вызывает sp_cron.php по факту вызывается функция
 

Спойлер

PY4uc0J.png


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

 

 

18 минут назад, ILexus сказал:

Можно поподробней? Модуль сам будет подставлять логин и пароль в форме авторизации?

Будет предоставлена настройка где вы указываете ссылку на страницу авторизации.
Так же указываете имена параметров к примеру
name
pass

Указываете метод, авторизации POST
дальше указываете определенный текст на станицы который видит только авторизованный пользователь.

И модуль начинает работать, парсит страницу видит что кода который видит только авторизованный, нету. Значит вместо выполнения работы одает сигнал что бы по указанным настройкам отправить запрос на автризацию, получить новые данные куки. И повторно спарсить страницу.

Так это будет работать.
Да и кстати это часть кода в модуле есть еше с момента выхода вкладки Браузер. И мне часто пишут почему закорментирован блок авторизации.
Я просто делаю все по своему секретному плану :)

Надіслати
Поділитися на інших сайтах

@ILexus Почему не сделать параллельное выполнения.

1. Как это сделать ? Если хостинг дергает каждую минуту скрипт, и он не будет проверять выполняется сейчас что то или нет. Тогда каждую минуту будет рождаться еше один поток на выполнения. Который в свою очередь будет параллельно парсить ОДНУ и ТУЖЕ ссылку с другими потоками. То есть по факту делать ненужную работу.
2. вероятность того что хостер вас заблокирует за аномальную активность 100500% когда у вас будет 4-5 проектов параллельно парсится, писать в базу.
3. Как тогда соблюдать порядок выполнения заданий.

 

Спойлер

mF4xGGg.png


Это так кажется что просто сделать параллельное выполнения заданий.
Если бы хотя бы язык пхп мог бы работать в много поточном режиме я бы сделал.

Один поток контрольный который получает настройки и думает кого и когда запускать. А остальными потоками выполнял бы задания, отдавал результат главному потоку который в свою очередь делал бы выводы и разгребал это все. А так в php ничего подобного на нормальном уровне не сделать.

Надіслати
Поділитися на інших сайтах

@Rassol2

А можно тогда реализовать выполнение заданий попеременно в одном потоке? Допустим если у всех заданий Порядок выполнения стоит 0, Время выполнения  позволяет выполняться всем заданиям, тогда выполнять каждое задание попеременно по одной ссылки за раз. Тогда это решило бы все задачи. А кому надо выполнять задания по очереди, после завершения конкретного, пусть ставят приоритеты, т.е. разный порядок выполнения.

 

44 минуты назад, Rassol2 сказал:

Это не решение вашей задачи.

Я бы такой подход охарактеризовал майоратством. Это когда вы запачкали рубашку и вместо того что бы ее стирать, идете покупаете новую )))

Вот ты сам поставь себя на мое место. Как бы ты тогда реализовал автоматизацию данного процесса? Я выкручиваюсь как могу. Каждый раз подсовывать новые данные авторизации для парсинга это можно и вручную, но тогда весь смысл крона пропадает! Хочется запустил и забыл.

Змінено користувачем ILexus
Надіслати
Поділитися на інших сайтах


2 минуты назад, ILexus сказал:

А можно тогда реализовать выполнение заданий попеременно в одном потоке? Допустим если у всех заданий Порядок выполнения стоит 0, Время выполнения  позволяет выполняться всем заданиям, тогда выполнять каждое задание попеременно по одной ссылки за раз. Тогда это решило бы все задачи. А кому надо выполнять задания по очереди, после завершения конкретного, пусть ставят приоритеты, т.е. разный порядок выполнения.

так все же не так работает.
Вы что думаете что крон выполняет по одной ссылке за раз ?
то есть максимум может выполнить 60 ссылок в минуту ?

Модуль работает гораздо быстрее. И он выполняет не по одной ссылке за раз. А что бы реализовать попеременное выполнения нужно же модулю как то определить чья же очередь настала именно сейчас.

Вот представим что у нас 100 заданий в одно и тоже время. Как определить кто будет выполнятся сейчас ?
для этого нужно ставить какие то моячки, кто выполнился а кто нет и так по переменно расставлять и убирать флажки.
А затем переходим к вариантам где есть 10 заданий на одном проекте. И и тогда сложность алгоритма вырастает в миллионы раз.

 

6 минут назад, ILexus сказал:

Вот ты сам поставь себя на мое место. Как бы ты тогда реализовал автоматизацию данного процесса? Я выкручиваюсь как могу. Каждый раз подсовывать новые данные авторизации для парсинга это можно и вручную, но тогда весь смысл крона пропадает! Хочется запустил и забыл.

как я бы решил это задачу я ответил в предыдущем посте. Научил бы переделать что когда сайт донар меня вылавливает. И делать под запрос на авторизацию.
Но модуль мой и вы конечно же не настолько хорошо разбираетесь в нем как я.
По этому следующем сообщением опишу как я сделал бы это если бы был вами :)
 

Надіслати
Поділитися на інших сайтах

@ILexus мое решение вашей задачи.

Для начала подумаем какую задачу нужно решить. И будем исходить из этого.

Задача.
Нужно не терять сессию, которая сбрасывается раз в 1.5 часа

Решение.
Парсить ради того что бы не потерять сессию звучит мягко говоря нерационально!

А может тогда отправлять запрос на поддержание сессии раз в час. А это идея.
Раз вы шарите в php тогда можно написать скрипт который будет обращается к сайту донору с указанными куками.
И повесить этот скрипт на отдельное задание cron на хостинге.

И теперь модуль будет делать то что он и должен парсить.
А ваш сторонний скрипт не смотря на модуль раз в час будет обращается к донору и говорить.

Привет ты меня еше не забыл ? Прошу тебя не сбрасуй мою сессию.


Как вам такой вариант решения задачи ?

  • +1 2
Надіслати
Поділитися на інших сайтах

У меня сейчас примерно сходная проблема (на локалке)... примерно через 10 минут парсинга меня выбрасывает с личного кабинета, а без кабинета не могу получить оптовые цены на товар, только розничные ((( Для решения проблемы сочиняю скрипт, который будет отслеживать время работы парсера и через каждые 9,5 минут останавливать парсинг сайта, выходить с кабинета, снова логиниться в кабинет, стягивать новые cookie, записывать новые данные в cookie.txt и потом дальше запускать парсинг... Не удобно для парсинга 10,000 товаров, а по другому было ещё неудобнее, много ручной работы... Если кто подскажет варианты, как упростить, буду благодарен )

Надіслати
Поділитися на інших сайтах


25 минут назад, Axelenz сказал:

У меня сейчас примерно сходная проблема (на локалке)... примерно через 10 минут парсинга меня выбрасывает с личного кабинета, а без кабинета не могу получить оптовые цены на товар, только розничные ((( Для решения проблемы сочиняю скрипт, который будет отслеживать время работы парсера и через каждые 9,5 минут останавливать парсинг сайта, выходить с кабинета, снова логиниться в кабинет, стягивать новые cookie, записывать новые данные в cookie.txt и потом дальше запускать парсинг... Не удобно для парсинга 10,000 товаров, а по другому было ещё неудобнее, много ручной работы... Если кто подскажет варианты, как упростить, буду благодарен )

я уже описал как я вижу реализацию этой задачи.
https://opencartforum.com/topic/123017-podderzhka-simplepars-universalnyy-parser-dlya-im/?do=findComment&comment=1614090

 

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

 

Так же как функционал
 

Спойлер

WnHRaV9.png

Заложил возможности в модуле отсеивать ссылки не содержащие определенного кода. И теперь на базе этого функционала я смогу взрастить не отбрасывание ссылки а отправку за проса на повторную авторизацию.

Все возможности в модуле так или иначе взаимосвязанные. И решение этой задачи я запланировал еше при реализации вкладки Настройки браузера.
А это наверное пол года назад.
Что бы доказать что я не просто так сотрясаю воздух любой из вас может сейчас зайти в /admin/view/template/catalog/simplepars_browser.tpl

 

Раскоментировать вот эту строку

Спойлер

ZOqzAaj.png


И вы увидите что в настройках браузера у вас появится еше одна вкладка.
 

Спойлер

t9PhUrK.png


Но она не готова, это заложенный фундамент в модуле. И кому это сильно нужно придется подождать реализации.
Просто я не способен сделать все и сразу. Тем более что сейчас ближайшие 2 недели нужно много побегать офлаин.
Но этот вопрос будет решен.

  • +1 1
Надіслати
Поділитися на інших сайтах

7 часов назад, Rassol2 сказал:

@ILexus мое решение вашей задачи.

Для начала подумаем какую задачу нужно решить. И будем исходить из этого.

Задача.
Нужно не терять сессию, которая сбрасывается раз в 1.5 часа

Решение.
Парсить ради того что бы не потерять сессию звучит мягко говоря нерационально!

А может тогда отправлять запрос на поддержание сессии раз в час. А это идея.
Раз вы шарите в php тогда можно написать скрипт который будет обращается к сайту донору с указанными куками.
И повесить этот скрипт на отдельное задание cron на хостинге.

И теперь модуль будет делать то что он и должен парсить.
А ваш сторонний скрипт не смотря на модуль раз в час будет обращается к донору и говорить.

Привет ты меня еше не забыл ? Прошу тебя не сбрасуй мою сессию.


Как вам такой вариант решения задачи ?

Вот скрипт который можно повесить на отдельное крон задания для поддержание сессии. 
В боевых условиях не тестировал но данные отправляет правильно.

Скрипт.
 

<?php

$url = 'Ссылка на сайт';
$uagent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
$header = ['Cookie: PHPSESSID=f6a303f60d3dc69207875dc14b1e98ca']; 

curl($url, $header, $uagent);

function curl($url, $header, $uagent){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    #curl_setopt($ch, CURLOPT_COOKIEJAR, './coc.txt');

    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $data  = curl_getinfo( $ch );
    curl_close( $ch );

    $data['errno']   = $err;
    $data['errmsg']  = $errmsg;
    $data['content'] = $content;

    $data['content'] = htmlspecialchars($data['content']);
    #echo "<pre>";
    #echo $data['content'];
    #echo "</pre>";
}
?>

Просто вставляете ссылку на сайт донор, ну и меняете содержимое куков для вашего сайта.
Должно работать.  

Змінено користувачем SelfTaught
  • +1 3
Надіслати
Поділитися на інших сайтах


Только что, Reanimaster сказал:

Доброе утро. 

Не могу понять как парсить атрибуты вместе с группами атрибутов. 

Здравствуйте.
Группа атрибутов не парсится. Вы ее можете выставить сами в атрибутах после парсинга. Или указать группу по умолчанию в момент парсинга. 

Надіслати
Поділитися на інших сайтах

6 минут назад, Rassol2 сказал:

Здравствуйте.
Группа атрибутов не парсится. Вы ее можете выставить сами в атрибутах после парсинга. Или указать группу по умолчанию в момент парсинга. 

Не пойму как это сделать. 

В карточке товара есть характеристики и их группы. 

Как я могу вручную указать если группа не 1?

Надіслати
Поділитися на інших сайтах


7 минут назад, Reanimaster сказал:

Не пойму как это сделать. 

В карточке товара есть характеристики и их группы. 

Как я могу вручную указать если группа не 1?

Напишите мне в ЛС я вам покажу где в опенкарте в атрибуте указывать группу.
Заодно напишите номер заказа я вам лицензионный ключ на модуль выдам.

Надіслати
Поділитися на інших сайтах

Доброе утро!

 

Вчера удалил все задания в кроне и создал новые.

 

У меня около 50 категорий и в каждой от 20 до 300 товаров. На каждую категорию создал заново задание. Но заданий на каждую категорию получилось по 2. Всем заданиям присвоена очередность исполнения.  Сначала сбор ссылок первым заданием для категории, потом парсинг в ИМ. Вчера настроил на ночную работу. Сегодня проверяю - ничего не выполнено.

 

Помогите разобраться.

Снимок экрана 2020-05-29 в 09.18.32.png

 

 

Но вот одно задание из всех было выполнено. Парсинг категории, а сбор ссылок этой категории почему-то не был выполнен. Хотя очередность крона сбора ссылок этой категории 23, а очередность крона парсинга в категорию 24. 

 

300091826_2020-05-2909_22_50.thumb.png.1fbe73be5197ac68f0a209e035085297.png

 

Как реально настроить. Вроде все интуитивно понятно и должно работать, но не работает. 

 

ПС. До этого все работало. Крон на хостинге настроен и работал до сегодняшней ночи (на задания парсинга)...

 

Змінено користувачем lerand
Надіслати
Поділитися на інших сайтах


4 минуты назад, lerand сказал:

Помогите разобраться.

Нажмите отключить и включить и включить повторно крон.
Возможно вы удалили задание в момент выполнения.

Надіслати
Поділитися на інших сайтах

2 минуты назад, Rassol2 сказал:

Нажмите отключить и включить и включить повторно крон.
Возможно вы удалили задание в момент выполнения.

 

Нет. Крон выполнялся вчера по заданиям до 8:00. А я удалил задания в 12:00. 

 

После назначения новых заданий я отключил крон, потом снова включил.

Результат на скринах.

 

 

Да и 24-ое по очередности задание было выполнено...

Змінено користувачем lerand
Надіслати
Поділитися на інших сайтах


Только что, lerand сказал:

 

Нет. Крон выполнялся вчера по заданиям до 8:00. А я удалил задания в 12:00. 

 

После назначения новых заданий я отключил крон, потом снова включил.

Результат на скринах.

выполните /admin/sp_cron.php и скажите что вам выведет модуль.

Надіслати
Поділитися на інших сайтах

@lerand ну понятное дело что нужно что бы пришло время выполнения задания.
И затем запустить вручную. А то получите пустоту.

Надіслати
Поділитися на інших сайтах

2 минуты назад, Rassol2 сказал:

@lerand ну понятное дело что нужно что бы пришло время выполнения задания.
И затем запустить вручную. А то получите пустоту.

 

? не совсем понял... Время-то уже пришло по факту.

Змінено користувачем lerand
Надіслати
Поділитися на інших сайтах


Только что, lerand сказал:

 

? не совсем понял...

Выставьте что бы задание сейчас должно было выполнятся.
И вручную отдайте приказ выполнить крон.

 

Толку дергать крон если сейчас не одно задание по времени не должно выполнятся.
 

Спойлер

2QwIvrJ.png

 

Надіслати
Поділитися на інших сайтах

1 минуту назад, lerand сказал:

На первом скрине видно, что первое задание с 1 до 9 ч

выставьте время и выполните скрипт. Просто сделайте это. Поставьте
* * *
и дерните sp_cron.php

Надіслати
Поділитися на інших сайтах

2 минуты назад, Rassol2 сказал:

выставьте время и выполните скрипт. Просто сделайте это. Поставьте
* * *
и дерните sp_cron.php

 

Поставил на первое задание... дернул... Пусто

 

471731194_2020-05-2909_39_56.thumb.png.3cb486e9b91d3ec187f4aeb290e4b6a7.png

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.