larval 进程管理

larval的计划任务以及任务队列不能够支持并发限制。如果每分钟都执行long task,不加限制情况下很容易造成同时执行大量long task,导致服务器资源被占用完。
虽然可以通过withoutOverlapping的方式指定command的单例执行。但是很多情况下不能满足业务场景。

为了既能满足任务并发,又可以限制并发数量。做了一种类似线程池的结构作为限制。代码如下

class ThreadPool
{

    /**
     * 池大小
     * @var int|mixed
     */
    private $pool_size;

    /**
     * 默认单位为分钟
     * @var
     */
    private $check_dead_limit;

    /**
     * 是否需要自己抛出进程
     * @var int|mixed
     */
//    private $is_self_thread ;

    /**
     * 进程数组
     * @var array
     */
//    private $threads_array ;


    /**
     * redis 数据存储
     * @var
     */
    private $redis_threads;

    /**
     * redis key前缀
     * @var
     */
    private $redis_threads_key_pre ;

    /**
     * 供应商id
     * @var int
     */
    private $supplier_id;

    /**
     * User: Today
     * Email: [email protected]
     * @param ${PARAM_LIST}
     * ThreadPool constructor.
     */

    function __construct(  )
    {

//        $this->redis_threads_key_pre = 'Threads:Report:' . $supplier_id ;
        //每个供应商并发数设置
        $this->pool_size = config('sys.export_pool_size');;
        //检测超时 分钟
        $this->check_dead_limit = config('sys.check_dead_limit') ;
        $this->redis_threads_key_pre = 'Threads:Export:';
//        $this->is_self_thread = false;
//        $this->threads_array = array();
    }

    /**
     * @return mixed
     */
    public function getRedisThreadsKeyPre()
    {
        $pre_key = $
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值