• PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Доброго :)
    Отвечаю на вопросы

    — чем концептуально отличается GearmanJob от GearmanTask и какой из них следует использовать для оформления отложенного задания?

    Job — это то, что поступает воркеру.
    Task — это то, что передает клиент

    То есть клиент кидает Task на сервер очередей, там два агрумента — имя ф-и и сериализованные данные (в виде строки).
    Если у воркера есть ф-я, указанная в Task, то есть он готов ее обработать, то он принимает задачу, а данные получает в виде Job.
    Извлекаются данные вот так (кусок реального кода):

    function create_campaign(GearmanJob $job){

    $rawData = $job->workload();
    $data = unserialize($rawData);


    А передаются на сервер вот так (я использую не Task, а чуть проще — просто doBackground)

    $gclient = new GearmanClient();
    $gclient->addServer('localhost');

    $new_offers = $client_db->select_new_offers();

    if(is_array($new_offers) AND count($new_offers) > 0){
    foreach($new_offers as $item){
    $data_for_gearman = array(
    'item' => $item,
    'client_class_name' => 'axxa',
    );
    $gclient->doBackground('new_offer', serialize($data_for_gearman));
    }
    }

    echo «Для добавления товаров на сервер очередей добавлено ».count($new_offers)." задач \n";
    Ответ написан
    1 комментарий