• Как запускать параллельные задачи на PHP?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Лихая задача.
    Что бы вы ни делали, все будет ресурсозатратно, а ну ка, у вас в онлайне 1000 чел запустили по нескольку задач, которые делают по нескольку тысяч действий ))
    Не вижу проблемы в том, чтобы запустить много воркеров. Вы можете использовать вот эту мою разработку для автоматического запуска и остановки воркеров, там есть класс, из которого можно управлять воркерами.
    https://habrahabr.ru/post/212761/
    Алгоритм: появилась задача - бросаем ее на сервер очередей - запускаем один воркер. Задача выполнилась - останавливаем один воркер.

    Воркеры можно располагать на разных серверах. Можно мониторить, на каком сервере по скольку воркеров запущено, и догружать свободные.
    Таким образом, задача с помощью Gearman превращается в распределенную.
    Сам по себе Gearman ресурсов почти не потребляет. Ресурсы будут потреблять воркеры, но от этого вам никак вообще не уйти - воркеры ведь решают задачу, чем бы вы ни решали задачу, вы потребите те же самые ресурсы.

    Еще. Вам не нужно для распределения задачи несколько Gearman. Вам нужен один сервер очередей Gearman, на котором регистрируются воркеры с разных серверов. Вообще введите в курс задачи подробнее где-то в личке, я смогу помочь более предметно.
    Ответ написан
    2 комментария
  • Для чего используются транзакции в mysql?

    zeromodule
    @zeromodule
    PHP
    Транзакции в MySQL используются для того же, для чего и в любой другой БД.

    Классический пример - перевод денег с одного счёта на другой.
    Если делать это без транзакции, то может произойти ситуация, когда деньги со счёта отправителя спишутся (первый запрос выполнится), а на счёт получателя не зачислятся (второй вопрос по каким-то причинам не выполнится).
    Транзакция гарантирует что либо оба запроса будут выполнены, либо не будет выполнен ни один.
    Ответ написан
    Комментировать