当前位置: 首页 > news >正文

具有口碑的柳州网站建设推荐免费咨询医生的平台

具有口碑的柳州网站建设推荐,免费咨询医生的平台,网站名称在哪里注册,海西州wap网站建设公司1. 前言使用场景 在 PHP Yii2 中,队列是一种特殊的数据结构,用于处理和管理后台任务。队列允许我们将耗时的任务(如发送电子邮件、push通知等)放入队列中,然后在后台异步执行。这样可以避免在处理大量请求时阻塞主应用…

1. 前言使用场景

在 PHP Yii2 中,队列是一种特殊的数据结构,用于处理和管理后台任务。队列允许我们将耗时的任务(如发送电子邮件、push通知等)放入队列中,然后在后台异步执行。这样可以避免在处理大量请求时阻塞主应用程序,从而提高应用程序的性能和响应能力。

批量任务需要提高处理速度,比如10万个消息,可以起10个异步队列消费进程,同时消费。

延时任务,如订单超时30分钟未支付,自动取消。

在 Yii2 中,队列的实现通常使用 Supervisor 或 Guzzle 这样的守护进程来监听队列,并在有新任务时自动执行。队列中的任务通常以闭包函数或类的实例形式存在,可以指定任务的处理顺序、优先级等。

使用 Yii2 队列时,你需要进行以下步骤:

  1. 配置队列组件:在应用程序的配置文件中,你需要配置队列组件的连接信息,包括队列服务器地址、端口、驱动方式等。
  2. 创建任务:创建一个继承自 yii\queue\JobInterface 的类,实现 execute() 方法来定义具体的任务逻辑。可以将任务中的耗时操作放在这个方法中执行。
  3. 推送任务:使用 Yii::$app->queue->push() 方法将任务推送到队列中。你可以根据需要指定任务的优先级、延迟执行时间等选项。
  4. 启动队列监听:通过运行 php yii queue/listen 命令来启动队列监听。这个命令会监听队列中的新任务,并在有新任务时自动执行。你可以根据需要指定监听的进程数、超时时间等参数。
  5. 处理队列任务:当有新任务到达时,监听进程会调用任务类中的 execute() 方法来执行任务。任务完成后,监听进程会自动处理下一个任务。

通过使用 Yii2 队列,你可以将耗时的后台任务与主应用程序分离,提高应用程序的性能和响应能力。同时,你还可以通过监听队列来控制任务的执行顺序、优先级等,实现更加灵活的任务调度。

2. 使用方法代码片段

1. 消费端

  1. 在配置文件中添加队列配置,console/config/main.php
//配置
'bootstrap' => [            'log',             'queueConf', // 把这个组件注册到控制台        
],        
'redisConf' => [            'class' => 'yii\redis\Connection',            'hostname' => '127.0.0.1',            'port' => 6379,            'database' => 0        
],        
'queueConf' => [            'class' => yii\queue\redis\Queue::class,            'redis' => 'redisConf', // 队列使用的redis            'as log' => \yii\queue\LogBehavior::class, //日志            'channel' => 'queueConf',        
],

   2. 添加配置之后可以运行./yii myqueue/info,可以看到队列当前状态

   3. 启动./yii myqueue/listen 开始监听,可启动多个进程同时消费

2. 生产端

1.在写队列的模块下,也添加配置,这里不需要加 bootstrap

'conf_redis' => [            'class' => 'yii\redis\Connection',            'hostname' => '127.0.0.1',            'port' => 6379,            'database' => 0        
],        
'queue_conf' => [            'class' => yii\queue\redis\Queue::class,            'redis' => 'conf_redis', // 队列使用的redis            'as log' => \yii\queue\LogBehavior::class,            'channel' => 'queue_conf',        
],

2.在common/jobs下,新建一个Job文件,在execute方法中添加要处理的业务逻辑

<?phpnamespace common\jobs;use yii\base\BaseObject;
use yii\queue\JobInterface;class TestJob extends BaseObject implements JobInterface{    public $orderId;    /**     * @param Queue $queue which pushed and is handling the job     */    public function execute($queue)    {        // 业务逻辑        $time = time();        $msg =  "时间:{$time},队列-订单号:{$this->orderId}\n";file_put_contents('/tmp/testjob.log',$msg, FILE_APPEND);    }
}

3.写入队列

<?phpfor($i=0; $i < 10; $i++) {            Yii::$app->queue_conf->push(new TestJob(['orderId' => $timestamp . $i,            ]));        }

4.延时执行
<?php// 5秒后执行
Yii::$app->queue_conf->delay(5)->push(new TestJob([                'orderId' => $timestamp . $i,            
]));

3. 调试方法

配置sync,任务可以同步执行,便于调试

<?php'myqueue' => [            'class' => \yii\queue\sync\Queue::class,            'handle' => true, // 任务是否立即执行        
],

4. 更多参考

    Yii2官方手册

http://www.yayakq.cn/news/299439/

相关文章:

  • 做网站和推广的公司哪家好制作一个网站的一般步骤
  • 网站制作 杭州公司网络维护人员
  • 提供微信网站建设公司有域名 如何做网站
  • 网站排名快速提升学做网站论坛 可以吗
  • 宁波网站推广优化公司电话网站开发维护工作
  • 网站建设51jyoo公益永久免费主机
  • 有没有专做水果网站抖音自媒体平台注册
  • 东莞桥头网站建设安卓系统开发平台
  • 盐城市城乡建设局门户网站wordpress环保公司主题
  • 好看的做地图分析图的网站网站制作工作流程
  • 专业做网站的团队凡客生活
  • 网站备案号查询网址广州公司注册多少钱
  • 建设银行甘肃省行网站在线logo免费设计生成器标智客
  • 网站开发工作分解结构企业服务公司起名
  • vs 手机网站开发网站建设询价邀请函
  • 唐山网站公司建设网站网站布局设计教程
  • 网站开发一般会用到什么语言哈密网站建设公司哪家专业
  • 网站开发公司排名前十泰州 住房和城乡建设厅网站
  • 电商网站有那些wordpress 循环两个交替
  • 网页基础知识湖南企业竞价优化服务
  • 网站推广计划书具体包含哪些基本内容?高端网站建设的方案
  • 企业网站seo外包 s代做论文网站好
  • 帮助设计的网站鲜花网站建设规划书
  • 攀枝花住房和城乡建设厅网站网站源码地址怎么看
  • 常德网站设计公司关键少数
  • jsp网站开发技术难点天津门户网站开发
  • 安卓游戏模板下载网站高埗镇仿做网站
  • 西安企业网站建设模板济南做网站的公司哪家好
  • 班级网站 php昆明免费网站制作
  • 做网站的有什么软件有域名怎么建设网站