发布于 1970-01-01 08:00
  • 15 个回答
    • php-resque,自带dashborad可以查看任务执行情况
      php-resque-scheduler 支持延时执行任务,比如多少小时之后

      ruby版的resque貌似还支持cron,但是php版的resque是不支持的。

      2022-12-01 01:36 回答
    • 可以试试php的多线程:pthreads

      2022-12-01 01:36 回答
    • 甭想了用php resque吧,基于redis的,够快!

      2022-12-01 01:36 回答
    • while(true){
          //如果队列空了 sleep几秒
          //处理过程
          //处理完一条usleep几毫秒,别把服务器拖垮
      }
      
      2022-12-01 01:36 回答
    • 脚本,不断的消费

      2022-12-01 01:36 回答
    • crontab

      2022-12-01 01:36 回答
    • php脚本,生命周期设置为10min
      crontab计划5分钟调用一次,这样可以保证有2个任务一直在工作

      ===========================================
      针对题主第一个问题,做任务队列,可以放到redis的队列中,这是单线程的,保证不会有两个进程获得一个任务

      2022-12-01 01:36 回答
    • 用队列,可以看看php_resque。

      crontab也可以,但是频率比较固定不太好控制。

      写脚本循环的话需要开一个守护进程,不然进程挂了都不知道,不推荐。

      2022-12-01 01:36 回答
    • 其实使用一个PHP 脚本一直去获取MQ 中的数据,并对数据进行消费。然后使用 supervisor 或者daemonise 做守护也是可以的。不过PHP 脚本还是有一个最长运行时间比较好,这样可以定时的释放一些没有释放的内存,然后由守护进程重启

      2022-12-01 01:36 回答
    • laravel解决这个问题用了两个办法:

      1. crontab,每一分钟跑一次。

      2. 队列(redis+supervisord)。,实际上就是supervisord不断起进程去消费,消费完了进程停止,supervisor检测到于是重新起进程。适用于小并发。

      总结起来无非:死循环/触发。

      2022-12-01 01:36 回答
    • 守护进程这一块可以使用swoole来搞就可以了。

      2022-12-01 01:36 回答
    • 使用swoole即可

      2022-12-01 01:36 回答
    • 我的做法是用Workman去执行一个死循环,当然用swoole也是很好的

      2022-12-01 01:36 回答
    • 简单对于消费队列常见的做法基本差不多了
      配置crontab,每分钟都运行,运用一个shell,
      此shell要判断当前有没有消费进程在,shell中时是死循环

      例如

      if ( 'test.php'进程存在 ) {
          exit()
      }
      
      while( true ){
          sleep 1
          php  test.php
      }
      2022-12-01 01:36 回答
    • 用 supervisor 或者daemonise 做守护,结合mq,一般的业务不成问题

      2022-12-01 01:36 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有