gpt4 book ai didi

php - 从 Gearman 作业服务器中删除所有 Gearman 作业

转载 作者:IT王子 更新时间:2023-10-29 00:09:32 30 4
gpt4 key购买 nike

有没有办法从 Gearman 作业服务器中删除所有 Gearman 作业?我有一个在后台运行 Gearman 作业的 PHP 应用程序。对于我的单元测试,我需要确保 a) 没有工作在等待执行它的工作人员,并且 b) 没有工作人员在工作。后者不是那么重要,因为它很容易杀死 worker ,但前者——我不知道如何实现。

最佳答案

删除所有单一类型的作业

使用以下命令(只需替换 FUNCTION_NAME):

gearman -n -w -f FUNCTION_NAME > /dev/null

要仅删除 n 个作业,请添加 -c n 参数,即删除 20 个作业:

gearman -c 20 -n -w -f FUNCTION_NAME > /dev/null


从服务器中删除所有作业

如果要删除所有作业,请运行以下循环:

for MATCH in $(echo status | nc 127.0.0.1 4730 | grep -v \\. |  grep -Pv '^[^\t]+\t0\t' | cut -s -f 1-2 --output-delimiter=\,); 
do
gearman -n -w -f ${MATCH%\,*} -c ${MATCH#*\,} > /dev/null;
done

127.0.0.1 4730 替换为您的 gearmand 服务器地址和端口。

ps: removing jobs from persistent storage (i.e. sqlite) will not remove them from gearmand until it is restarted (because gearmand process has in-memory cache)

关于php - 从 Gearman 作业服务器中删除所有 Gearman 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078282/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com