Да очень просто, как по мне , так даже удобней чем логи копать.
После каждого ошибка-опасного действия втавляю кубик с запросом в котором записываю в базу № потока и № этого самого кубика который запрос делает. В конце скрипта (точнее в конце потока) делаю запрос к базе удаляю все записи которые относятся к этому потоку(по № потока).
Если поток отработал правильно, дошел до конца, он удаляет из базы все свои записи.
Если поток отвалился, соответственно запрос на удаление не сделал, записи в базе остались.
Таким образом в базе остаются только записи отвалившихся потоков.
Screenshot from 2021-11-01 18-17-14.png
смотрю на последнюю запись отвалившегося потока, ищу (поиском) по номеру кубика нужный кубик, вижу где скрипт отвалился. Думаю почему, исправляю, пробую дальше
Поток
-
Привет всем!
Можно ли как-то включить режим многопотока только после выполнения условия?
Например, в 1 потоке заходим на сайт и грабаем всех пользователей.
Потом делим кол-во пользователей на кол-во потоков и уже под каждым потоком логинимся и отправляем сообщения для своей части пользователей.
Т.е. сперва работаем только в 1 потоке, а после граба пользователей врубаем многопоток и выполняем для каждого свои задачи.
@support, такое возможно? -
@support А как указать кол-во потоков из переменной?
Ну допустим я в OnApplicationStart считаю кол-во пользователей. А потом уже, исходя из этого кол-ва, я указываю необходимое кол-во потоков.
Например, у нас есть 100 тысяч пользователей. Допустим, я считаю на 1 поток одну тысящу пользователей. Получается 100 потоков. Я оставлю шаблон работать круглые сутки. Он будет сканить онлайн каждый час. Допустим новых добавилось 200. Запускать это на 100 потоков нет смысла, поэтому если меньше тысячи, то делать все в 1 поток.
Я думал в OnApplicationStart просчитать и указать в переменную кол-во потоков, но там можно указать только ресурс. Как быть с переменной?Остается только идея, просчитать сперва кол-во потоков, записать в файл, а потом уже указать ресурс файла. Из файла работает ок. Если в переменную нельзя, то будем через файл.
-
@mardoksp Вроде потоки мало занимают, если ничего не делают. Можно 100 потоков запускать, проверять в них количество пользователей, и в зависимости от количества уже выполнять на потоке действия. А остальные потоки пока ожидать будут.
-
@blackhacker Да я пока решил сделать через ресурс.
Добавлю ресурс на ссылку на файл. В стартовой функции сделаю все операции и посчитаю нужное кол-во потоков и результат запишу в этот файл. А кол-во потоков укажу как ресурс.
Только что проверил - все ок :)