Следующий код представляет собой фрагмент кода, взятый из примера реализации и правильной работы 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
ВОПРОСЫ:
Что я не понимаю, так это следующие части:
Я предполагаю, что символы новой строки в producer
код не имеет никакого значения в выполнении, поэтому эта строка будет эквивалентна:
$pheanstalk->useTube('testtube')->put("job payload goes here\n");
правильный? Если это правда, то должны ли эти конкретные вызовы функций быть в таком порядке или они могут быть в любом порядке? Мое предыдущее понимание функций и классов в php заключалось в том, что вы будете напрямую вызывать функцию из объекта такого типа: $object->classFunction()
Однако, является ли приведенный выше код допустимой техникой php, где вы можете вызывать все эти функции одновременно или это что-то особенное для pheanstalk?
Что ignore('default')
код делаешь?
Что $pheanstalk->getConnection()->isServiceListening();
код делаешь?
$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");
ignore(tubename)
удаляет эту трубку из списка наблюдения. default
канал по умолчанию отслеживается, так что это отключает это и просто ждет сообщений в testtube
труба.
Он делает именно то, что говорится в комментарии выше: проверка доступности сервера. Вы можете использовать это в своем коде производителя, чтобы сообщить об ошибке перед попыткой отправки на сервер beanstalk, который не прослушивает.
Других решений пока нет …