Php laravel排队系统是否适用于大型项目?

Php laravel排队系统是否适用于大型项目?,php,laravel,redis,queue,beanstalkd,Php,Laravel,Redis,Queue,Beanstalkd,我需要知道laravel 5队列管理系统是否适合大型项目(大约有10万用户)。我想每天一次向用户发送消息(而不是垃圾邮件:)。 redis对这项工作(排队)足够好吗?还是最好使用一个专门用于排队(如BeaStald)的LIB? < P>公平,尝试对这个问题提出合理的答案,我们应该考虑以下内容: 订阅者人数 要交付的内容 运行同步队列所需的系统资源 100000封订阅的电子邮件需要在RAM中存储100000 x[数据],因此让我们将电子邮件地址长度平均为32个字符(字节) 100000 x 3

我需要知道laravel 5队列管理系统是否适合大型项目(大约有10万用户)。我想每天一次向用户发送消息(而不是垃圾邮件:)。

redis对这项工作(排队)足够好吗?还是最好使用一个专门用于排队(如BeaStald)的LIB?

< P>公平,尝试对这个问题提出合理的答案,我们应该考虑以下内容:

  • 订阅者人数
  • 要交付的内容
  • 运行同步队列所需的系统资源
100000封订阅的电子邮件需要在RAM中存储100000 x[数据],因此让我们将电子邮件地址长度平均为32个字符(字节)

100000 x 32字节=3.2MB

当然,Laravel的队列系统序列化对象,因此实际内存使用量可能会更高(用于Laravel队列的Redis内存),但这还不足以让您担心

我过去曾建议,发送订阅电子邮件的成功设置将在以下条件下运行:

  • 最小2GB内存
  • 2个处理器/核心
Laravel运行的队列系统在服务器上不太费力。一如既往,根据需求进行扩展

此类(使用Laravel)的软件将包括以下内容:

  • 雷迪斯
  • 主管
将Redis设置为Laravel的队列驱动程序。记得
编写器需要predis/predis

您还需要创建用于存储失败作业的迁移。默认情况下,Laravel有一个内置的:

php artisan队列:失败的表

php artisan迁移

安装了Supervisor后,在
/etc/Supervisor/conf.d
中创建一个conf文件,以便Supervisor可以了解队列的配置:

touch/etc/supervisor/conf.d/myprojectqueue.conf
nano/etc/supervisor/conf.d/myprojectqueue.conf

在那里,布置一个适合您的环境的配置。在以下演示设置中,4个队列运行程序将同时在您的队列上执行:

    [program:myprojectqueue]
    command=php /path/to/project/artisan queue:listen --tries=1
    directory=/path/to/project
    stdout_logfile=/path/to/project/storage/logs/supervisord.log
    redirect_stderr=true
    autostart=true
    autorestart=true
    numprocs = 4
    process_name = %(program_name)s%(process_num)s
保存conf文件。启动/重新启动管理器

有关更多信息:


为什么要投反对票?如果你对此一无所知,你可以不回答。谢谢@Justin。这是一个完整而令人信服的答案。我试着用redis排队。我还查了拉威尔密码。我发现laravel自己管理队列,而redis只是一个备份数据库。我想这会让排队慢一些。我只是想知道,如果我想实现与主项目分离的队列管理系统,该怎么办。例如,用python(django)和芹菜实现?还是用cpp和豆茎?@ali farhoudi,你能解决你的问题吗?使用此解决方案时,多个队列比单个队列慢?@DolDurma,是的,我最终使用了带有beanstalked队列驱动程序的laravel。我们已经使用了大约两年,没有任何问题。目前,该队列在大约1个半小时内处理了大约100000个工作,只有7名工人。每项工作大约需要2秒钟。由于SLA规则,我们不得不减少工人。有了更多的工作人员,进程就快多了(考虑到CPU和RAM都可以)。@AliFarhoudi那么,我可以得到你的邮件地址吗?您的网站当前未联机,请稍后再试advace@DolDurma当然,af{dot}farhoudi{at sign}gmail{dot}com