pheantalk 和 beanstalk 函数

pheanstalk and beanstalk functions

以下代码是从正在实施和正常工作的 pheanstalk 示例中摘取的片段(从 pheanstalk 的 github 页面获得: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 中的函数和 classes 的理解是,你会直接从它的 class 类型的对象中调用函数:$object->classFunction(),但是上面的代码是有效的 php 技术,您可以同时调用所有这些函数,还是 pheanstalk 有什么特别之处?

  1. ignore('default')代码在做什么?

  2. $pheanstalk->getConnection()->isServiceListening();代码在做什么?

  1. 你是对的,空格是微不足道的。你看到的是 method chaining

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

相当于:

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

所以它首先调用 useTube() 来指定应该将有效载荷放入哪个管子,然后将有效载荷放入其中。这取决于执行操作的方法 return 调用它们的 Pheanstalk 对象,因此它也是以下的缩写:

$pheanstalk->useTube('testtube');
$pheanstalk->put("job payload goes here\n");
  1. ignore(tubename) 将该管从监视列表中删除。默认情况下会监视 default 管,因此这将禁用它并等待 testtube 管中的消息。

  2. 它所做的正是上面评论所说的:检查服务器是否可用。您可以在生产者代码中使用它在尝试发送到未监听的 beanstalk 服务器之前报告错误。