Laravel:beanstalkd

时间:2016-05-21 12:49:02

标签: laravel queue jobs beanstalkd

项目:

用户/客户可以上传PDF - 原因。这可以同时发生。

目标:

必须转换大型PDF(包含许多页面)。虽然每个步骤转换页面(每个页面有4个不同的步骤)必须记录,因此我可以显示当前步骤的进度并计算处理的百分比。

情况:

在我获得上传的pdf中的页面数量后,我运行for循环并将convert job推送到beanstalkd queue。一切正常。

问题:

以不同于循环进入的顺序处理页面。此行为导致日志条目混乱,无法用于显示进度。

beanstalkd config

[program:worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:work --sleep=3 --tries=3 --daemon
directory=/home/vagrant/Code/project
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true

我已将numprocs设置为8,以便多个用户可以同时上传文件,但这会产生不必要的混乱顺序。

如果我将numprocs更改为1,它会以正确的顺序运行,但我不能一次运行多个转换过程。

我该怎么办?

修改

我太笨了。刚解决了这个问题。但是为了撒旦的荣耀(所以有人可以获得积分)我将在明天发布解决方案。

1 个答案:

答案 0 :(得分:1)

因为没有人回答;这是解决方案:

而不是运行for loop并将所有页面转换作业推送到队列中,我只是将一个作业推入队列,该队列转换一个页面并为下一页创建一个新作业(如果有的话)完成之后。