Многопоток при работе с базой MySQL

Поддержка
  • Потоки скрипта берут строки из удаленной базы MySQL. Время работы потока может доходить до 2-х минут, нужно чтобы в это время другой поток не взял ту же самую строчку. Искал по форуму, видел разные варианты. Если делать дополнительный столбец и ставить там метку, что строчка в работе, может произойти ситуация, что поток закончится с непредвиденной ошибкой, и строчка останется залоченной. То же самое может произойти, если в глобальную переменную записывать id строк, которые в работе.

    Может есть еще вариант, как это реализовать?

  • @zelenberg через асинхронную логику можно решить проблему, могу платно сделать быстро

  • Если в глобальную переменную записывать id а по окончании работы удалять этот id то можно проверить, если поток "не работает"(данную информацию предоставляет БАС), а в переменной id потока не удален, значит поток отвалился.

  • @zelenberg said in Многопоток при работе с базой MySQL:

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

    Может есть еще вариант, как это реализовать?

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

    https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html

  • 0 Votes
    16 Posts
    274 Views
  • 0 Votes
    5 Posts
    601 Views
  • 0 Votes
    3 Posts
    583 Views
  • 0 Votes
    4 Posts
    1903 Views
  • 0 Votes
    4 Posts
    1459 Views