Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel作业:如何确保单个作业有很长的超时时间?_Laravel_Jobs_Laravel 6 - Fatal编程技术网

Laravel作业:如何确保单个作业有很长的超时时间?

Laravel作业:如何确保单个作业有很长的超时时间?,laravel,jobs,laravel-6,Laravel,Jobs,Laravel 6,我的网络应用程序有大量的工作,除了一项外,所有工作都运行良好 我需要这个特殊的工作,以生存很长一段时间,整整一小时3600秒,并失败,如果随着时间的推移,不要重试 我试图在工作中设置此属性 public $timeout = 3600; public $retryAfter = 4000; public $tries = 1; 我得到的结论是,在失败之后,这项特殊的工作永远不会被重新尝试,这也没关系 但会忽略超时和/或retryAfter。几分钟后,作业被标记

我的网络应用程序有大量的工作,除了一项外,所有工作都运行良好

我需要这个特殊的工作,以生存很长一段时间,整整一小时3600秒,并失败,如果随着时间的推移,不要重试

我试图在工作中设置此属性

public $timeout = 3600;     
public $retryAfter = 4000;  
public $tries = 1;          
我得到的结论是,在失败之后,这项特殊的工作永远不会被重新尝试,这也没关系

但会忽略超时和/或retryAfter。几分钟后,作业被标记为失败

我做错了什么? 还有,请问,超时和重试有什么区别

有关我的上下文的更多信息 我的队列由主管管理,如下所示:

[program:projectname-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/appdemo.projectname.com/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/appdemo.projectname.com/storage/logs/laravel_worker.log
根据Lararavel的文件,这是建议的配置


public$timeout=3600
仅在使用
queue:work
运行队列时有效,但在使用
queue:listen
时无效

另外,在
worker
级别上,您有
--timeout
参数,您可以在worker级别上指定超时,而不仅仅是在作业级别上,就像这样
php artisan queue:work--timeout=3600

但是,您应该确实考虑到对于耗时的作业有一个单独的队列,因此作业应该在另一个队列上排队,但是所有其他不耗时的作业都可以在一个队列上运行。p>

另外,
timeout
定义作业应运行多长时间,而
retryAfter
指定作业应在多长时间后再次运行。当然,
trys
需要设置为更高的值,以便可以重试


希望这有帮助。

public$timeout=3600
仅在使用
queue:work
运行队列时有效,但如果使用
queue:listen
则无效

另外,在
worker
级别上,您有
--timeout
参数,您可以在worker级别上指定超时,而不仅仅是在作业级别上,就像这样
php artisan queue:work--timeout=3600

但是,您应该确实考虑到对于耗时的作业有一个单独的队列,因此作业应该在另一个队列上排队,但是所有其他不耗时的作业都可以在一个队列上运行。p>

另外,
timeout
定义作业应运行多长时间,而
retryAfter
指定作业应在多长时间后再次运行。当然,
trys
需要设置为更高的值,以便可以重试


希望这能有所帮助。

长时间运行的作业可能有几个因素导致其过早失败:

  • 应用程序本身指定的超时
  • PHP配置文件指定的超时
  • 队列工作程序指定的超时

看看其中的每一个,看看你的瓶颈在哪里。请记住,不同服务器的设置会有所不同。

长时间运行的作业可能有几个因素影响其早期失败的原因:

  • 应用程序本身指定的超时
  • PHP配置文件指定的超时
  • 队列工作程序指定的超时

看看其中的每一个,看看你的瓶颈在哪里。请记住,设置会因服务器而异。

retryAfter不是从作业失败开始计算的,而是从作业失败或未结束开始计算的。retryAfter不是从作业失败开始计算的,而是从作业失败或未结束开始计算的。错误:retryAfter是从作业开始计算的。这就是为什么文档告诉我们要在比timeout稍长一点的时间后进行retryAfter的原因。我上次检查时,他们没有将其添加到文档中(回到5.1)。我已经把它移走了,以免引起混乱!错误:retryAfter从作业开始计算。这就是为什么文档告诉我们要在比timeout稍长一点的时间后进行retryAfter的原因。我上次检查时,他们没有将其添加到文档中(回到5.1)。我已经把它移走了,以免引起混乱!