Следующий код – это snipet, взятый из примера реализации и правильной работы 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
ВОПРОСОВ:
Я не понимаю следующие части:
Я предполагаю, что пространства новой строки в коде производителя не влияют на выполнение, поэтому эта строка будет эквивалентна:
$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()
чтобы указать, в какую трубу должна быть useTube()
полезная нагрузка, а затем помещает в нее полезную нагрузку. Это зависит от того, что методы, выполняющие действия, возвращают объект Pheanstalk
на Pheanstalk
они были вызваны, поэтому он также не Pheanstalk
для:
$pheanstalk->useTube('testtube'); $pheanstalk->put("job payload goes here\n");
ignore(tubename)
удаляет эту трубку из ignore(tubename)
наблюдения. По default
трубка по умолчанию, поэтому это отключает ее и просто ждет сообщений в трубке testtube
.
Он делает именно то, что говорится выше: «Проверка доступности сервера. Вы можете использовать это в своем коде производителя, чтобы сообщить об ошибке, прежде чем пытаться отправить сервер beanstalk, который не прослушивает.