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
问题:
我不明白的是以下部分:
我假设 producer
代码中的换行符对执行没有任何影响,所以这一行是等价的:
$pheanstalk->useTube('testtube')->put("job payload goes here\n");
正确吗?如果那是真的,那么那些特定的函数调用必须按那个顺序,还是可以按任何顺序?我之前对 php 中的函数和 classes 的理解是,你会直接从它的 class 类型的对象中调用函数:$object->classFunction()
,但是上面的代码是有效的 php 技术,您可以同时调用所有这些函数,还是 pheanstalk 有什么特别之处?
ignore('default')
代码在做什么?
$pheanstalk->getConnection()->isServiceListening();
代码在做什么?
- 你是对的,空格是微不足道的。你看到的是 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");
ignore(tubename)
将该管从监视列表中删除。默认情况下会监视 default
管,因此这将禁用它并等待 testtube
管中的消息。
它所做的正是上面评论所说的:检查服务器是否可用。您可以在生产者代码中使用它在尝试发送到未监听的 beanstalk 服务器之前报告错误。
以下代码是从正在实施和正常工作的 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
问题:
我不明白的是以下部分:
我假设
producer
代码中的换行符对执行没有任何影响,所以这一行是等价的:$pheanstalk->useTube('testtube')->put("job payload goes here\n");
正确吗?如果那是真的,那么那些特定的函数调用必须按那个顺序,还是可以按任何顺序?我之前对 php 中的函数和 classes 的理解是,你会直接从它的 class 类型的对象中调用函数:$object->classFunction()
,但是上面的代码是有效的 php 技术,您可以同时调用所有这些函数,还是 pheanstalk 有什么特别之处?
ignore('default')
代码在做什么?$pheanstalk->getConnection()->isServiceListening();
代码在做什么?
- 你是对的,空格是微不足道的。你看到的是 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");
ignore(tubename)
将该管从监视列表中删除。默认情况下会监视default
管,因此这将禁用它并等待testtube
管中的消息。它所做的正是上面评论所说的:检查服务器是否可用。您可以在生产者代码中使用它在尝试发送到未监听的 beanstalk 服务器之前报告错误。