首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 中使用 PM2 管理多个队列

接着上一篇的思路,要在 Laravel 中使用 PM2 管理多个队列,该如何操作呢创建多个队列使用 php artisan queue:table 命令创建 Laravel 的队列表。...然后使用 php artisan make:job 命令创建新的队列任务类,例如:php artisan make:job ProcessInvoice在这个例子,我们将使用名为 ProcessInvoice...修改 pm2.config.js 配置文件在您的 Laravel 项目根目录,打开 pm2.config.js 文件,并将以下内容添加到 apps 数组:{ name: "Invoices Queue...我们定义了两个不同的 queue:work 进程一个用于名为 invoices 的队列,另一个用于名为 payments 的队列。...启动 PM2 进程使用以下命令启动 PM2 进程pm2 start pm2.config.js现在,您可以在 PM2 查看多个队列的运行情况,并且每个队列都将被单独管理和监视。

55950

要在 Laravel 设置定时任务并使用 PM2 进行管理

要在 Laravel 设置定时任务并使用 PM2 进行管理,这是个好想法,以下步骤:在 Laravel 创建定时任务使用 php artisan make:command 命令创建一个新的 Artisan...npm install pm2 -g创建 PM2 配置文件在 Laravel 项目根目录创建一个新的 pm2.config.js 文件,并将以下内容添加到文件:module.exports = {...LaravelArtisan 命令,并使 PM2 每分钟运行一次 php artisan schedule:run 命令。...启动 PM2 进程使用以下命令启动 PM2 进程pm2 start pm2.config.js这将使用您的 pm2.config.js 文件的配置启动一个新的 PM2 进程。...现在,当您的服务器运行时,Laravel 的定时任务将由 PM2 管理,并且每分钟都会自动运行。您可以使用 pm2 logs 命令来查看日志,并使用 pm2 stop 命令停止进程

74230
您找到你想要的搜索结果了吗?
是的
没有找到

何在一个Docker同时运行多个程序进程?

我们都知道Docker容器的哲学是一个Docker容器只运行一个进程,但是有时候我们就是需要在一个Docker容器运行多个进程 那么基本思路是在Dockerfile 的CMD 或者 ENTRYPOINT...运行一个”东西”,然后再让这个”东西”运行多个其他进程 简单说来是用Bash Shell脚本或者三方进程守护 (Monit,Skaware S6,Supervisor),其他没讲到的三方进程守护工具同理...Bash Shell脚本 入口文件运行一个Bash Shell 脚本, 然后在这个脚本内去拉起多个进程 注意最后要增加一个死循环不要让这个脚本退出,否则拉起的进程也退出了 run.sh #!...containers 一个最小化的Linux容器初始化系统 dumb-init是一个简单的进程监控器和init系统,设计为在最小容器环境(Docker)作为PID 1运行。...http://dockone.io/article/951 在Docker Container启动定时任务 http://dockone.io/article/1070 Docker容器内多进程管理(

14.6K30

LaravelLumen 使用 redis队列

四、创建任务 1、生成任务类 通常,所有的任务类都保存在 app/Jobs 目录laravel app/Jobs 不存在,在运行 Artisan 命令 make:job 的时候,它将会自动创建。... 接口, 告诉 Laravel 将该任务推送到队列,而不是立即运行: lumen app/Jobs目录已经存在,由于不能执行artisan命令,直接复制目录的ExampleJob.php即可。...简单处理可以使用 php artisan queue:work --daemon & 10、运行队列监听器 开始进行队列监听 laravel 包含了一个 Artisan 命令来运行推送到队列的任务的执行...你也可以指定监听哪一个连接的队列: php artisan queue:listen connection-name ---- 请记住, 队列进程是长生命周期的进程,会在启动后驻留内存。...配置 Supervisor Supervisor 配置文件通常存放在 /etc/supervisor/conf.d 目录,在该目录下,可以创建多个配置文件指示 Supervisor 如何监视进程,例如,

2.3K20

Laravel之队列「建议收藏」

默认是sync,即同步的,直接处理,无队列.要将其修改为对应的类型,database,redis等 laravel学院文档地址 使用redis为例: 1,在config/queue.php return...//指定连接,也就是不同队列类型,database,redis,在queue.php配置 php artisan queue:listen --queue=high,low //指定队列优先级...,比如有限处理某队列,多个队列用,分割 php artisan queue:listen --timeout=60 //每个任务运行最大时间不超过60秒 php artisan queue:listen.../conf.d 目录,在该目录,可以创建多个配置文件指示 Supervisor 如何监视进程,例如,让我们创建一个开启并监视queue:work 进程laravel-worker.conf 文件:...start laravel-worker:* 如果出现异常: 可查看我博客的supervisor错误排查 后台队列(守护进程) Artisan 命令queue:work 包含一个–daemon 选项来强制队列

1.7K10

NativePHP 的技术原理和实现细节

Boot NativePHP 命令 native:serve 是一个标准的 Laravel Command,它的核心逻辑类似于 CD 到 resources/js 目录并执行 yarn run dev...通过 PHP -S 127.0.0.1 启动 PHP Server 通过 artisan 运行 Laravel 数据迁移 通过 artisan 运行 Laravel WebSocket 通过 artisan...] 框架启动一个 API Server,在这个 Server 定义了许多和 APP 交付的 RESTful API;比如操作剪辑版、窗口管理、菜单管理等。...注意这里每启动一个 Server API Server、PHP Server 都会是一个单独的进程;[Electron Plugin] 会收集这些进程的 PID,待关闭 APP 时会一并把这些所有进程...未来 NativePHP 会不止适配 Laravel,还会适配 Symfony 等其他框架,这给我们使用 PHP 开发 Native APP 提供了一个很好的机会。

56740

Supervisor自动管理Laravel事件队列

首先使用artisan创建一个事件 php artisan make:event DoTest 此时在Events/目录下会生成一个DoTest文件 为这个事件创建一个监听器 php artisan make...:listen DoTest 此时在Listeners/目录下会生成一个DoTest文件 我们让监听器监听DoTest事件 在Providers/EventServiceProvider.php文件添加配置...'/logs/dotest.log'; ¦ file_put_contents($log, "dotest\r\n", FILE_APPEND | LOCK_EX); } 随便在一个脚本调用事件...:ps aux | grep 'do_test_event' 打开进程配置文件:vim /etc/supervisord.d/laravel_work.ini 增加配置: [group:events]do_test_event...执行脚本:php artisan newcate:wechat dotest 发现日志数据已经有两条,do_test_event进程也已经开启 其他命令 supervisorctl:进入命令行交互界面

43640

laravel-s 在 Docker 中使用(包含队列的使用)

"] 如需增加运行队列进程, 改动文件的numprocs即可 构建队列镜像 docker build ....t1 执行好上面的重启任务之后laravel会把时间戳t2写入缓存 每一个队列任务执行完成之后,从缓存拿出时间戳,如果t2不等于t1停止当前进程 由于supervisord设置了autostart,...又会重启队列进程, 这样子就不会中断任务 更新代码方法1 每次更新代码, 写一个脚本docker cp代码到容器里面 容器再按照上面的命令重启队列, 即可加载最新代码 更新代码方法2 容器运行的时候增加参数...-v映射本地目录 更新代码的时候是更新宿主机代码, 然后映射到容器, 容器再按照上面的命令重启队列, 即可加载最新代码 更新代码方法3 构建好新的容器镜像进行 停止旧的容器队列进程 ## 执行此命令后后查看队列进程无任务输出..., 即可开始停止 php artisan down supervisorctl stop all ## 此处启动新的容器运行即可 ######################## ## 容器启动好之后

20710

基于 RoadRunner 驱动 Octane 构建高性能 Laravel 应用

确保项目根目录下的 rr 具备可执行权限后,重新构建 Sail 容器: chmod +x ./rr ./vendor/bin/sail build 最后重新启动 Sail 容器的服务: ....默认情况下,Octane 会根据机器 CPU 的内核数来启动对应数量的请求处理器进程(Worker),你也可以在基于 Octane 启动服务器时通过 --workers 参数手动指定 Worker 数量...优雅重启 Worker 进程 和 Nginx 类似,你可以通过 roload 指令优雅重启所有 PHP Worker 进程: php artisan octane:reload 以上是 RoadRunner...六、注意事项 由于一个 Worker 会处理多个请求,而在同一个 Worker ,只会在初始化时加载一次 Laravel 应用,后面的请求会复用第一次加载的服务容器(意味着所有服务提供者的 register...在项目根目录下更新下载 rr 过程自动生成的 .rr.yaml 文件如下: server: command: "php .

1.8K30

Laravel使用Queue队列的技巧汇总

Laravel 内置了一个方便的方式来指定任务重试的最大次数。当任务超出这个重试次数后,它就会被插入到 failed_jobs 数据表里面。...创建任务 生成任务类 在你的应用程序,队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存在,那当你运行 make:job Artisan 命令时目录就会被自动创建。...在这个目录你可以创建任意数量的配置文件来要求 Supervisor 怎样监控你的进程。...例如我们创建一个 laravel-worker.conf 来启动与监控一个 queue:work 进程: [program:laravel-worker] process_name=%(program_name...启动 Supervisor 当这个配置文件被创建后,你需要更新 Supervisor 的配置,并用以下命令来启动进程: sudo supervisorctl reread sudo supervisorctl

2.3K10

Redis 分布式锁在 Laravel 任务调度底层实现的应用

,类型包括 Artisan 命令、回调函数或者 Shell 脚本等: protected function schedule(Schedule $schedule) { // 每小时调度一个 Artisan...调度任务是如何执行的 以上调度任务的注册是在控制台应用启动时完成的,当我们运行 Artisan 命令就会启动控制台应用,比如 schedule:run,并且会注册所有的调度任务到 Schedule 对象的...return $this->schedulingMutex->create($event, $time); } 这里使用了通过 CacheSchedulingMutex 实现的锁来确保多台服务器启动多个...schedule:run 命令进程同时只有一个进程可以运行: public function create(Event $event, DateTimeInterface $time) { return...(比如一个耗时任务需要执行半个小时,但是调度设置成了每十分钟执行一次,就会出现任务重叠运行的问题),可以通过分布式锁来实现,因为锁天生就适用于这种同一时间、只能允许一个进程/线程进入临界区代码的场景,进而保证临界区程序运行结果的最终一致性

6.1K21

基于 Redis 在 Laravel 实现消息队列及底层源码探究

在上面的示例代码,我们将文章 ID 作为消息数据进行传递。 处理进程 消费端的处理进程通常是一个或者多个常驻内存的进程,它们或订阅或轮询消息队列,如果消息队列不为空,则取出其中的消息数据进行处理。...这里为了简化流程,我们创建一个 Artisan 命令来模拟一个常驻内存的轮询进程作为消息处理器: php artisan make:command MockQueueWorker 并编写其实现代码如下...异步处理进程 Laravel 提供了多个 Artisan 命令来处理消息队列,这些 Artisan 命令的源码位于 vendor/laravel/framework/src/Illuminate/Queue...IO 密集型操作,还可以对 CPU 密集型操作进行优化,比如启动多个处理进程一个大的耗时任务拆分成多个子任务执行,消息队列可以看做是 PHP 异步和并发编程的一种补充实现; 由于队列先入先出的特点,...因此可以确保同一个队列的任务可以按照指定序列执行,而不像一般并发编程那样不能确保子任务的执行顺序; 由于消息队列中间件(这里是 Redis)可以独立于应用(这里是 Laravel 项目)进行部署,而且理论上可以启动任意多个处理进程消费消息队列的任务

6.1K30

记录一下:使用 Supervisor 自动管理 Laravel 队列

Supervisor Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。...它可以很方便的监听、启动、停止、重启一个多个进程。...用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。...这个目录也是可以改的 修改 /etc/supervisord.conf 最后一行 [include] files = supervisord.d/*.ini //这个就是你自己建的配置文件目录,支持...//你的Laravel artisan文件路径 autostart=true # 是否自动启动 autorestart=true #是否 自动重启 user=root #执行任务的用户 numprocs

80720

CentOS Supervisord守护进程实现Laravel异步队列任务

它可以很方便的监听、启动、停止、重启一个多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动重启。...这里我以PHP框架Laravel为例,它提供了对队列的支持,要让队列监听常驻内存,就需要借助Supervisord守护进程工具,同时,解决使用了Supervisor后,Laravel队列被重复执行的问题...安装 Supervisor yum install -y supervisor 目录结构: /etc supervisord.d/ #我们自定义的项目进程配置目录 supervisord.conf...#supervisor服务的一些配置 队列任务配置 在 /etc/supervisord.d/ 目录中新增 laravel-worker.ini [program:sendMail] process_name...我注释掉了 numprocs=8 ,这是之前踩的一个坑,设置进程数为8,最后我的一个队列被重复执行多次,但在 job 表只生成了一条记录,很显然就是 supervisor 配置问题导致,先把这里注释了

53920

CentOS Supervisord守护进程实现Laravel异步队列任务

它可以很方便的监听、启动、停止、重启一个多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动重启。...这里我以PHP框架Laravel为例,它提供了对队列的支持,要让队列监听常驻内存,就需要借助Supervisord守护进程工具,同时,解决使用了Supervisor后,Laravel队列被重复执行的问题...安装 Supervisor yum install -y supervisor 目录结构: /etc supervisord.d/ #我们自定义的项目进程配置目录 supervisord.conf...#supervisor服务的一些配置 队列任务配置 在 /etc/supervisord.d/ 目录中新增 laravel-worker.ini [program:sendMail] process_name...我注释掉了 numprocs=8 ,这是之前踩的一个坑,设置进程数为8,最后我的一个队列被重复执行多次,但在 job 表只生成了一条记录,很显然就是 supervisor 配置问题导致,先把这里注释了

64020

基于 Redis 实现 Laravel 广播功能():引入 Laravel Echo 接收广播消息

通过 Sail 编排 Laravel Echo Server 在项目根目录的 docker 目录下(我已经通过 sail artisan sail:publish 发布了 Sail 的容器编排文件,所有会有这个目录...)新建一个 laravel-echo-server 子目录,然后把 laradock/laravel-echo-server 目录下的所有文件拷贝到这个子目录下: 修改 laravel-echo-server.json...docker-compose.yml 的 services 中新增一个 laravel-echo-server 服务编排配置: services: ......启动完成后,就可以通过 sail ps 命令查看它是否启动成功: 或者通过查看 laravel-echo-server 日志也可以确认它是否启动成功: Laravel Echo 客户端 启动Laravel...连接成功消息流: 接下来,我们运行如下 Artisan 命令分发事件广播: sail artisan redis:publish 然后启动队列处理器进程处理 broadcast 队列消息(这一步也不能漏了哈

3.7K10

Laravel 编写第一个 Artisan 命令

,我们可以通过三种工具实现命令行交互: ArtisanLaravel 内置的命令行操作工具集,支持自定义命令; Tinker:一个由 PsySH 扩展包驱动的 REPL,允许你通过命令行与整个...Artisan 命令简介 我们在前面的教程已经多次使用过 Artisan 命令,比如创建控制器: php artisan make:controller PostController 如果你查看应用根目录...我们在执行 php artisan 命令时,artisan 就指的是根目录下的 artisan 文件,所以命令需要在应用根目录下执行,然后 artisan 之后的部门都是作为请求参数被控制台应用获取并处理...不同的 Laravel 应用由于安装了不同的扩展包或编写了自定义的 Artisan 命令,所以在当你准备了解一个新应用时,有必要通过 php artisan list 快速浏览该应用支持的所有命令。...内置 Artisan 命令 运行 php artisan list 命令后,你会看到新安装的 Laravel 应用默认提供了很多 Artisan 命令,我们不可能把每一个都讲一遍下来(实际上,我们会在每篇教程中分散提到

3.1K20

UNIT3D:一款基于Laravel框架的全新PT站程序

: yum -y install supervisor 先启动并设置开机启动: systemctl start supervisord systemctl enable supervisord 回到宝塔面板内新建一个站点...(y/N) A:No 走完这个向导后,就会在你的站点目录生成出一个appid和key,复制这些内容待会需要用到。...接着我们配置计划任务: crontab -e 写入: * * * * * php /www/wwwroot/你的站点目录/artisan schedule:run /dev/null 2 &1 然后回到你的站点根目录的上级目录...现在我们这个站点是通过HTTP访问的,如果我们要把UNIT3D放到HTTPS运行呢?...之前我们通过laravel-echo-server在站点根目录下生成了一个名为laravel-echo-server.json的配置文件,现在你应该首先利用宝塔的SSL证书申请功能为你的站点域名申请一个

2.6K20
领券