php - 在远程服务器上运行 beanstalkd worker

标签 php laravel-4 beanstalkd pheanstalk

我的堆栈设置包括以下内容

Machine1 - 主服务器(运行 laravel)
Machine2 - laravel 代码库的 MySql 服务器
Machine3 - Beanstalkd worker

我在 Machine1 上设置了 Supervisord 并添加了以下队列监听器

[program:queue1]
command=php artisan queue:listen --queue=queue1 --tries=2
...

我的 laravel 队列配置文件 (app/config/queue.php) 读取以下内容

'beanstalkd' => array(
    'driver' => 'beanstalkd',
    'host'   => '--- Machine3 IP ---',
    'queue'  => 'queue1',
    'ttr'    => 60,
),

我已经在 Machine3 上安装了 beanstalkd 以及 Beanstalk 控制台,可以看到我的任务被推送到队列并成功执行。但是我不确定 Machine3 是否真的在执行它们,我怀疑的原因是主服务器上的 CPU 使用率很高,而 Machine3 上的 CPU 使用率没有峰值>

我完全关闭了我的 beanstalkd 服务器以检查队列是否仍在处理,结果是 laravel 报告的错误,表明它无法连接到 beanstalkd 服务器。

我在某处读到,您也需要在 beanstalkd 服务器(Machine3)上拥有您的 laravel 代码库,这真的是可行的方法吗?

最佳答案

您在哪台机器上运行 queue:listen 就是执行队列实际处理的机器。

目前您所做的只是将队列存储在 ma​​chine3 上,但在 ma​​chine1 上处理它们。

因此,如果您希望它处理队列,您需要让 ma​​chine3 运行 queue:listen 命令。

关于php - 在远程服务器上运行 beanstalkd worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465068/

相关文章:

php - 如何通过长文本并将其转换为 MySQL 的 Insert 语句

php - 加快php网站的速度

php - 在 laravel 中播种时出现质量分配错误

laravel - 使用 Laravel-Excel 将行追加到现有的 Excel 文档

php - 多个队列监听器将在多个进程上运行相同的作业

php - SQL 查询不更新 phpmyadmin 中的数据库

php - Laravel 急切加载以最大程度地减少查询

ruby-on-rails - delayed_jobs vs resque vs beanstalkd?

linux - 我收到 "cannot assign requested address"错误

PHP 性能 file_get_contents() 与 readfile() 和 cat