функции стебля и бобовых

Следующий код представляет собой фрагмент кода, взятый из примера реализации и правильной работы pheanstalk (полученный на странице github pheanstalk: https://github.com/pda/pheanstalk):

<?php

require_once("vendor/autoload.php");
use Pheanstalk\Pheanstalk;
$pheanstalk = new Pheanstalk('127.0.0.1');

// ------------ producer (queues jobs):

$pheanstalk
->useTube('testtube')
->put("job payload goes here\n");

// ------------ worker (performs jobs):

$job = $pheanstalk
->watch('testtube')
->ignore('default')
->reserve();

echo $job->getData();
$pheanstalk->delete($job);

// ------------ check server availability

$pheanstalk->getConnection()->isServiceListening(); // true or false

ВОПРОСЫ:

Что я не понимаю, так это следующие части:

  1. Я предполагаю, что символы новой строки в producer код не имеет никакого значения в выполнении, поэтому эта строка будет эквивалентна:

    $pheanstalk->useTube('testtube')->put("job payload goes here\n");
    

правильный? Если это правда, то должны ли эти конкретные вызовы функций быть в таком порядке или они могут быть в любом порядке? Мое предыдущее понимание функций и классов в php заключалось в том, что вы будете напрямую вызывать функцию из объекта такого типа: $object->classFunction()Однако, является ли приведенный выше код допустимой техникой php, где вы можете вызывать все эти функции одновременно или это что-то особенное для pheanstalk?

  1. Что ignore('default') код делаешь?

  2. Что $pheanstalk->getConnection()->isServiceListening(); код делаешь?

1

Решение

  1. Вы правы, что пробелы незначительны. То, что вы видите, называется метод цепочки
$pheanstalk->useTube('testtube')->put("job payload goes here\n");

эквивалентно:

$temp = $pheanstalk->useTube('testtube');
$temp->put("job payload goes here\n");

Итак, сначала это называет useTube() чтобы указать, в какую трубу должен быть помещен полезный груз, он помещает в него полезный груз. Это зависит от того, что методы, выполняющие действия, возвращают Pheanstalk объект, к которому они были призваны, так что это также сокращение:

$pheanstalk->useTube('testtube');
$pheanstalk->put("job payload goes here\n");
  1. ignore(tubename) удаляет эту трубку из списка наблюдения. default канал по умолчанию отслеживается, так что это отключает это и просто ждет сообщений в testtube труба.

  2. Он делает именно то, что говорится в комментарии выше: проверка доступности сервера. Вы можете использовать это в своем коде производителя, чтобы сообщить об ошибке перед попыткой отправки на сервер beanstalk, который не прослушивает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]