За последние 24 часа нас посетили 22018 программистов и 1112 роботов. Сейчас ищет 771 программист ...

MySQL + pcntl_fork()

Тема в разделе "Сделайте за меня", создана пользователем KING_PHP, 1 май 2020.

Метки:
  1. KING_PHP

    KING_PHP Активный пользователь

    С нами с:
    18 апр 2015
    Сообщения:
    154
    Симпатии:
    3
    Адрес:
    Волгоград
    Доброго времени суток, напоролся на проблему при работе с базой данных, при работе с форками, хотелось бы ссылочки на примеры решения, статьи, и все что есть в тырнете (да, у меня сломались все поисковики).

    Цель: 1. Нужно считывать \ записывать в базу данных с нескольких процессов, под одним пользователем, в одну базу, даже параллельно.

    Ошибки:
    1. MySQL server has gone away

    Проблема: если 2 воркера, видимо, параллельно шлют запросы в базу, то нас шлет на (ошибку 1). Еще есть проблема с моими кривыми руками, которые бы отрывать по хорошему, но не стоит на этом зацикливаться.

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

    Бот:
    1. Делаем форк, создаем процесс С1, в нем цикл, в стиле:
    PHP:
    1. ...
    2.                 } else {
    3.                     pcntl_setpriority(5);
    4.                     while (true) {
    5.                         pcntl_sigwaitinfo([SIGHUP]);
    6.                         //Вот тут мы запускаем наш дичный, но с вашей помощью отличный, алгоритм на проверку коннекта к базе.
    7.                        //Тут методы которым нужен коннект с базой
    8.                        posix_kill($parent, SIGUSR1);
    9.                   }
    10.              }
    11. ...
    Соответственно в главном процессе ловим и раздаем сигналы.

    [Инфа]

    Нужны ссылки на статьи с примерами, примеры работы с базой данных: параллельно из нескольких потоков, или что мне нужно...
     
    #1 KING_PHP, 1 май 2020
    Последнее редактирование: 1 май 2020
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
  3. KING_PHP

    KING_PHP Активный пользователь

    С нами с:
    18 апр 2015
    Сообщения:
    154
    Симпатии:
    3
    Адрес:
    Волгоград
    Тут не совсем за PHP. Но спасибо, дали мысль для гугла (починил гугл, но иногда ломается снова)