【问题标题】:beanstalkd default wal directorybeanstalkd 默认 wal 目录
【发布时间】:2015-11-16 04:00:06
【问题描述】:

我们正在使用 Laravel 和 BeansTalkD 在我们的应用程序中进行排队。现在我被困在这个命令上:

php artisan queue:listen

不断获得工作,换句话说,有很多工作,我不知道如何清理队列。

问题是我使用这个命令运行 beanstalkd:

beanstalkd -z 1024*1024

没有指定wal 目录。

上周我一直在搜索如何清理豆茎工作队列,但一无所获。

提示

  • 我在 Mac OS X Yosemite 上运行它。
  • 重启BeansTalkD服务没有解决
  • 我不在数据库中存储作业,因此刷新命令不是一个。 (我不知道 Laravel 是否在我知道的情况下这样做,但我不这么认为)
  • 完成后我正在删除作业,但该应用会生成大量作业。

【问题讨论】:

  • 您的意思是作业没有处理?
  • -z和WAL目录是怎么连接的? -z 以字节为单位设置最大作业大小,另一方面,-b 允许您指定 WAL 目录。
  • 您只想从队列(管)中删除所有作业吗?还是别的什么?
  • @peterm 我没有说它们是连接的,关键是我运行命令时没有指定 -b 选项
  • @peterm 我只想删除队列中的所有内容

标签: php macos laravel queue beanstalkd


【解决方案1】:

如果您没有使用-b 选项,那么重新启动beanstalkd(同样不使用-b)应该会有所帮助。

现在,如果由于某种原因重新启动对您不起作用并且您正在使用 Laravel 5.x,您可以考虑安装 artisan-beans 软件包并使用 php artisan beans:purge 命令清理您的队列。


更新:由于您使用的是 Laravel 4.2,因此您可以

  1. 安装无依赖 CLI 工具beanstool。这是在 OS X 上安装 v2.0 的方法

    wget https://github.com/tyba/beanstool/releases/download/v0.2.0/beanstool_v0.2.0_darwin_amd64.tar.gz
    tar -xvzf beanstool_v0.2.0_darwin_amd64.tar.gz
    cp beanstool_v0.2.0_darwin_amd64/beanstool /usr/local/bin/
    
  2. 然后在 bash 中运行它

    for i in {1..N}; do beanstool delete -t default --state=ready; done
    

    N 更改为您要一次删除的作业数量,将default 更改为您的队列名称(管)。

    如果您想知道当前队列中有多少作业正在运行

    beanstool stats
    

【讨论】:

  • 我使用的是 Laravel 4.2
  • 我在下面的答案中找到了另一个解决方案:) thx alot man
【解决方案2】:

除了接受的答案之外,我还找到了另一种解决方案,即停止 (CTRL+C) 命令:

beanstalkd -z 1048576

然后使用-b 选项再次启动命令:

beanstalkd -z 1048576 -b ~/btd_data

这也解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多