剖析Laravel队列系统--推送作业到队列

译文 GitHub 原文链接有几种方法可以将作业推送到队列中:```phpQueue::push(new InvoiceEmail($order));Bus::dispatch(new InvoiceEmail($order));dispatch(new InvoiceEmail($order));(new InvoiceEmail($order))dispatch();...
阅读全文

剖析Laravel计划任务--初探

译文 GitHub 原文链接 想象这种情况,作为一个大型 SaaS 的开发者,您需要找到一种在周末每分钟选择 10 个随机客户的方式,并提供折扣升级,发送折扣的工作可能非常简单,但我们需要每分钟运行一次,为此我分享一些 CRON 的简要介绍给还不熟悉人。CRON====CRON 是一个守护进程,它驻留在你的 linux 服务器中,大部分时间都没有唤醒,但是每一分钟它都会睁开双眼,...
阅读全文

剖析Laravel计划任务--事件属性

译文 GitHub 原文链接 你添加的每个记录都将转换为 `Illuminate\Console\Scheduling\Event` 的实例,并存储在 Scheduler 的 `$events` 类属性中,Event 对象由以下内容组成: 命令运行 CRON 表达式 用于评估时间的时区 操作系统运行该命令的用户 命令应该运行的环境列表 维护模式配置 ...
阅读全文

剖析Laravel计划任务--创建和运行系统命令

译文 GitHub 原文链接 在启动计划任务的事件的时候,Laravel 的进度管理器在`Illuminate\Console\Scheduling\Event`对象上调用 `run()` 方法,表示该事件发生在 `Illuminate\Console\Scheduling\ScheduleRunCommand` 内。这个 `run()` 方法构建命令语法,并使用 Symfony Pr...
阅读全文

剖析Laravel计划任务--避免重复

译文 GitHub 原文链接 有时一个预定的工作需要比我们最初预期的更多的时间运行,这样会导致另外一个工作的实例开始,而第一个还没有完成,例如,我们运行一个每分钟生成报告的工作有时候当数据变大时,报表生成可能需要 1 分钟以上,这样就可以在第一个还在进行时启动该作业的另一个实例。在大多数情况下,这是很好的,但有时候应该防止这种情况,以保证正确的数据或防止高的服务器资源消耗,所以让我们看...
阅读全文

剖析Laravel队列系统--Worker

译文 GitHub 原文链接 现在,我们知道了 Laravel 如何将作业推到不同的队列中,让我们来深入了解 workers 如何运作你的作业。 首先,我将 workers 定义为一个在后台运行的简单 PHP 进程,目的是从存储空间中提取作业并针对多个配置选项运行它们。```phpphp artisan queue:work```运行此命令将指示 Laravel 创建应用程序...
阅读全文

Laravel Passport API 认证使用小结

看到常有人问 Laravel Passport 用于密码验证方式来获取 Token 的问题,刚好我最近一个 API 项目使用 Laravel `Dingo Api`+`Passport`,也是使用 Oauth2 的`'grant_type' = 'password'`密码授权来做 Auth 验证,对于如何做登录登出,以及多账号系统的认证等常用场景做一下简单的使用小总结。 基本配置基本安装配...
阅读全文

从PHP Laravel 到 Go Iris--路由篇

Laravel 是我最喜欢的 PHP Web 开发框架,所以也希望可以在 Go 的 Web 框架中选择一个类似 Laravel 这样的好用又全栈的框架,刷了一下的文档,最终还是选择 Iris,当然我是没有从性能角度考虑,只是从可以快速开发,且支持的特性全还有就是看着顺眼的心理选择了 Iris,应该有不少 PHPer 像我一样使用 Laravel 同时在学习 Go,所以为了便于 Laravel 开发...
阅读全文

微信小程序【有猫撸】开发体验

最近体验了一下微信小程序开发,做了一个简单的刷猫片的小玩具,效果大致如下:开始是用 Laravel 写了 API,后来又用 Go 的 Iris 写了一套,压测了一下,Iris 的性能比 Laravel 的高了可不是一点点,后来就换 Iris 版本的 API 了。数据通过 Go 写了个简单的脚本抓取入库,附件上传到七牛。本来这个小程序还有小论坛和复制淘宝链接功能的,但是上传到微信审核以后...
阅读全文

Go 实现依赖注入

为什么需要依赖注入作为一名软件开发人员,如果我们希望使代码保持清洁和可维护性,我们将代码分割成不同的层次。通常边界至少放置在基础设施和业务逻辑之间。当我们专门处理复杂的业务逻辑时,基础架构依赖于我们的业务逻辑是可取的,这样在更改基础架构时不会破坏我们的软件。开发一个新的软件项目时的第一个决定是否选择一个结构来实现分层。 大多数情况下,我选择简洁的架构,但您有另一个很好的选择,例如 D...
阅读全文