Categories
php

laravel 异步任务

在 Laravel 中,使用 php artisan queue 创建并执行异步任务的完整流程如下:


1. 配置队列驱动

在 .env 文件中设置队列驱动(如 databaseredissqs 等):env复制下载

QUEUE_CONNECTION=database

如果需要使用 database 驱动,需先创建 jobs 表:bash复制下载

php artisan queue:table
php artisan migrate

2. 创建异步任务(Job)

使用 Artisan 生成一个 Job 类:bash复制下载

php artisan make:job ProcessPodcast

3. 分发任务(Dispatch Job)

在控制器或 CLI 命令中调用 Job:php复制下载

use App\Jobs\ProcessPodcast;

// 分发任务到队列
ProcessPodcast::dispatch($podcastData);

// 延迟执行(5秒后运行)
ProcessPodcast::dispatch($podcastData)->delay(now()->addSeconds(5));

// 指定队列(如 "high" 优先级队列)
ProcessPodcast::dispatch($podcastData)->onQueue('high');

// 传输参数例子
ImportSCEyeScreeningBatRoaster::dispatch($task->id,$EyeScreeningBatID,$path,Admin::user());

4. 启动队列 Worker

运行队列处理器:bash复制下载

php artisan queue:work

常用选项:

选项说明
--queue=high,default优先处理 high 队列
--tries=3失败任务重试次数
--timeout=60任务超时时间(秒)
--daemon守护进程模式(生产环境推荐)

5. 任务执行流程

  1. 任务入队
    • dispatch() 将任务序列化后存入 jobs 表(database 驱动)。
  2. Worker 监听队列
    • queue:work 从队列中取出任务并反序列化。
  3. 执行 handle() 方法
    • 运行 Job 类中的业务逻辑。
  4. 任务完成/失败
    • 成功:任务从队列删除。
    • 失败:任务进入 failed_jobs 表(需配置)。
Categories
java

jenkins 本地安装与调试

docker-compose

version: '3'
services:
  jenkins:
    image: jenkins/jenkins
    container_name: jenkins
    restart: unless-stopped  #指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes:
      - "/usr/bin/docker:/usr/bin/docker"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7"
      - "./jenkins/jenkins_home:/var/jenkins_home"
      - "./jenkins/jenkins_config:/var/jenkins_config"
    environment:
      http_proxy: 'http://192.168.0.12:33333'
      https_proxy: 'http://192.168.0.12:33333'
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      JAVA_OPTS: '-Xmx2048M -Xms2048M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:MaxNewSize=128m -Djava.util.logging.config.file=/var/jenkins_home/log.properties -Duser.timezone=Asia/Shanghai'
    user: root
    ports:
      - "10000:8080"
      

由于默认插件地址是国外的 没有插件jenkins可就没啥用了

所以安装完成后在插件市场 plugin manager设置 插件更新地址

https://eastamerica.cloudflare.jenkins.io/current/update-center.json

Categories
mysql

异步进程 快速导入mysql

screen -S import_mysql4;

开启多一个screen 来执行异步进程

mysql -uroot -p

连接mysql

source xxx.sql;

执行导入 本地文件mysql文件

ctrl+A D

退出 当前screen

之后可以退出ssh 不影响该import 进程

screen -ls

列出有什么screen进程

screen -r XXX;

恢复某个screen进程

Categories
Uncategorized

Bambu Connect (beta)

简介:一款能连接和发送打印到 Bambu Lab 3D 打印机的精简工具

bambu-connect://import-file?path=%2Ftmp%2Fcube.gcode.3mf&name=Cube&version=1.0.0

浏览器打开这个链接会启用bambooconnect 执行模型导入

具体教程:

https://wiki.bambulab.com/zh/software/bambu-connect

Categories
Uncategorized

拓竹 3D 打印 与 bambustudio 的通讯

bambustudio://open?file=https%3A%2F%2Fmakerworld.bblmw.cn%2Fmakerworld%2Fmodel%2FCN5139cd3ed4128%2F27338432%2Finstance%2Fcc8b73a0-2635-4556-ae20-9b52f9f350d7.3mf%3Fat%3D1746121131%26exp%3D1746121431%26key%3Db7425e4b9ef6f417d7334deb194efee6%26uid%3D683076520%26name%3Dmini%E5%

打开这个链接会启用 bambustudio 导入项目

Categories
php

php 第三方包信息

https://packagist.org/

这个网站有所有 composer包的信息

Categories
Uncategorized

finclip

https://www.finclip.com/

新一代 小程序基座 可以自定义小程序 提供小程序上架等功能

比单纯跨平台 走得更远一点

Categories
go

ruoyi-go

在ruoyi-go 基础上 构造ruoyi-go 前后端分离版本

Categories
java

jwt token 和 sa-token

JWTSa-Token在功能、使用场景和优缺点等方面存在显著差异。

功能和适用场景

  • JWT‌:JWT是一种无状态令牌协议标准(RFC 7519),主要用于在网络间安全传递声明(Claims)。其核心特点包括无状态性、自包含结构(Header.Payload.Signature三段式编码)和跨域支持,特别适合分布式系统和跨服务认证‌1。JWT通常用于身份验证和信息交换,特别是在无状态的客户端-服务器通信中。由于其简洁和标准化的特点,JWT可以与各种语言和技术栈配合使用,提高系统的灵活性和可扩展性‌2。
  • Sa-Token‌:这是一款轻量级权限认证框架,专注于解决系统的登录认证、权限管理、会话管理等安全问题。其核心特点包括有状态会话管理(基于服务端存储会话,如Redis)、开箱即用的API(提供注解式鉴权、踢人下线、单点登录等功能)和多存储适配(支持Redis、Memcached、数据库等会话存储方式)‌12。Sa-Token提供了丰富的权限相关注解,支持多种条件组合,如AND、OR逻辑关系,以及复杂的表达式,适合需要快速开发和易于维护的项目‌2。

优缺点对比

  • JWT‌:
    • 优点‌:无状态性减少了服务器的存储压力,提高了系统的可扩展性和跨域支持;自包含结构使得令牌本身包含所有必要信息,无需服务端存储;简洁和标准化使其与各种语言和技术栈兼容‌12。
    • 缺点‌:需要自行实现令牌黑名单机制以实现踢人功能;由于信息自包含,令牌体积较大,可能会影响传输效率‌13。
  • Sa-Token‌:
    • 优点‌:提供丰富的权限相关注解和功能,支持多种存储方式,适合快速开发和易于维护的项目;开箱即用的体验简化了权限认证的集成和使用过程‌12。
    • 缺点‌:有状态会话管理增加了服务器的存储压力;虽然功能丰富,但在高度定制化安全策略方面可能不如Spring Security灵活‌2。
Categories
java

若依 本地docker部署

Dockerfile :

FROM  docker.1ms.run/openjdk:8

MAINTAINER Robin Luo

RUN mkdir -p /ruoyi/server/logs \
    /ruoyi/server/temp \
    /ruoyi/skywalking/agent

WORKDIR /ruoyi/server

ENV SERVER_PORT=8080

EXPOSE ${SERVER_PORT}

ADD ./ruoyi-admin.jar ./app.jar

ENTRYPOINT ["java", \
            "-Djava.security.egd=file:/dev/./urandom", \
            "-Dserver.port=${SERVER_PORT}", \
            # 应用名称 如果想区分集群节点监控 改成不同的名称即可
#            "-Dskywalking.agent.service_name=ruoyi-server", \
#            "-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar", \
            "-jar", "app.jar"]

docker-compose.yaml

version: '3.8'
services:
  ruoyi-his-server:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ruoyi-his-server
    ports:
      - "8009:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=druid,dev
    restart: always

再该目录下 执行 docker-compose up -d 启动服务

执行 dock-compose down 停止服务