分类目录归档:Laravel&Lumen

Laravel&Lumen安装Mongodb扩展

Laravel对于Redis扩展用起来非常方便,理论上来说对于Mongodb的扩展也应该如此,为此今天我们来记录下Laravel是如何支持Mongodb的。

1.添加composer依赖(jenssegers/mongodb):

composer require jenssegers/mongodb
或者
在composer文件添加"jenssegers/mongodb": "3.2",然后执行composer update

2. 配置Service Provider 继续阅读

Laravel&Lumen系统之服务剥离

最近随着业务的不断发展,越来越复杂的逻辑交织在一起使得原来的代码很难维护,同一个类似的逻辑在多个地方调用,每次逻辑变更的时候非常容易忘记改其中的一处地方。所以需要抽出一个服务层来处理业务。

在app目录下单独创建了service文件夹来存放所有的服务。根据大的业务又分成了不同的子文件夹,针对每个大模块创建对应的工厂类,以便于后期调用的时候能够方便调用,不需要到不同文件夹找对应的类名。

随意找其中的一个例子来叙述下,比如说订单的OrderService.php: 继续阅读

Laravel&Lumen系统之队列服务

一般而言有些会阻塞运行程序的任务,我们会采用队列服务已经异步调用,这样可以实现非阻塞服务。之前有个需求是调用支付宝的服务,因为调用第三方的服务时间和成功不可控,所以处理成队列异步服务,发现功能竟然不可用,所以一步一步排查后解决这个问题。

1. 首先要确认的是队列的代码是否正确,Lumen和Laravel一样,都是需要继承虚拟基类Job,并且在handle方法中实现业务代码。

class DeleteBill extends Job
{
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        *****
    }
}

2. 确认调用处调用队列服务的地方是否正确。这里需要注意的是,Laravel文档里是用的dispatch分发调用:$this->dispatch(new DeleteBill()); 另外还有一种方法是使用Queue对象的push方法:Queue::push(new DeleteBill());这两种方式都是可以调用成功,它会把任务塞到相应的队列中。 继续阅读