首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis 分布式锁在 Laravel 任务调度底层实现中应用

类型包括 Artisan 命令、回调函数或者 Shell 脚本等: protected function schedule(Schedule $schedule) { // 每小时调度一个 Artisan...cache:clear')->weekly(); } 更多任务调度定义和调度时间间隔设置,请参考任务调度官方文档。.../app/artisan schedule:run >> /dev/null 2>&1 该任务每分钟调度一次,执行是上述定义调度任务 Laravel 项目提供 Artisan 命令 schedule...这里 this->events 数组是控制台应用启动通过 App\Console\Kernel schedule 方法定义调度任务注册: // 注册闭包函数类型调度任务 public function...要实现不同服务器或者同一台服务器同一个调度任务不能重叠运行(比如一个耗时任务需要执行半个小时,但是调度设置成了每十分钟执行一次,就会出现任务重叠运行问题),可以通过分布式锁来实现,因为锁天生就适用于这种同一

6.2K21

Laravel利用redis和定时任务实现活跃用户统计

最近在SummerLaravel教程-Web开发实战进阶》学到很多东西,以前只会看文档,大概了解Laravel内容而在实际运用中确不知道该怎样做,碰到一个需求不会立马联想到“这个东西可以用...实现...public function getActiveUsers() { // 尝试从缓存中取出 cache_key 对应数据。...是一个命令类,存放在app/Console/Commands/在这里面键入命令相关逻辑 --command=为我们今后要调用命令名 如 php aritsan larabbs:calculate-active-user...; } } 接下来我们就可以输入 php artisan larabbs:calculate-active-user 执行 上面handle方法 定时任务 我们不可能每一个小时都手动调用...综上所述 ` php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1 `表示将 schedule:run 结果与错误输出到黑洞

89420
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel项目的性能优化

你需要做是在部署应用程序后,执行下面的这个命令: php artisan route:cache 但是,如果你添加或修改了任意一个路由信息,请不要忘记清除之前缓存以及重新执行缓存命令。...php artisan route:clear php artisan route:cache 注意,这只对控制器类路由有效。 缓存配置 就如路由一样,你同样可以在应用中缓存配置文件。...不过不用担心,这里有个 Artisan 命令专治这个。 php artisan config:cache 你在部署之后可以使用它。和路由差不多,别忘了编辑东西时候清理一下缓存。...php artisan config:clear php artisan config:cache 优化三:composer优化 sudo composer dump-autoload optimize...优化四:laravel 提升性能命令 php artisan optimize 优化五:使用性能更好Cache和Session驱动 Laravel默认是有缓存,当你新建一个 Laravel 项目的时候

3.7K30

Laravel 5.0 发布, 海量新特性!!

路由缓存 如果你应用由各种各样控制器路由 (controller routes) 组成, 你可以利用新增 Artisan 命令 route:cache 大幅度提升路由注册速度....新版 Laravel 定时任务允许开发者在 Laravel 框架内来定义定时执行命令, 然后只需要在服务器定义一个总 Cron 任务即可....($request->input()); } 当 Laravel IoC container 识别到方法变量类型, 它会自动注入 FormRequest 实例, 于是这个请求会被 自动验证....你可以通过 php artisan list 查看详细命令. 配置缓存 通过 config:cache 命令, 可以把所有的配置项写入一个缓存文件中....它可以输出带有颜色高亮和数组折叠功能调试信息. 你可以尝试一下: dd([1, 2, 3]);

4.1K60

10个技巧优化PHP程序Laravel 5框架

bootstrap/cache/config.php,可以使用以下命令来取消配置信息缓存: php artisan config:clear命令事情就是把 bootstrap/cache/config.php...可以使用下面命令清除路由缓存: php artisan route:clear命令事情就是把 bootstrap/cache/routes.php 文件删除。...要清除类映射加载优化,请运行以下命令: php artisan clear-compiled 此命令会删除上面 optimize 生成两个文件。...注意:此命令要运行在 php artisan config:cache 后,因为 optimize 命令是根据配置信息(如:config/app.php 文件 providers 数组)来生成文件。...为数据集书写缓存逻辑 合理使用 Laravel 提供缓存层操作,把从数据库里面拿出来数据集合进行缓存,减少数据库压力,运行在内存专业缓存软件对数据读取也远远快于数据库。

5.3K20

Laravel项目部署后,出现 file_put_contents ()

出现几率为偶尔性,不常出现; 结合百度搜索,猜测可能出现原因: storage 目录权限问题【已赋予:storage、bootstrap/cache文件夹 777权限,还是会报错】 inode...执行了 php artisan cache:clear log 文件日志过大问题。【log 文件不到 4KB】 目录不存在问题。...) 执行 crontab 命令,在定时器中有报错,所以在定时器中生成了日志,故权限为 root 是在root用户下执行命令,文件相关权限就会变成root(包括git、php artisan 、mkdir...最后一定记得运行命令 php artisan config:cache php artisan cache:clear 问题总结 Laravel 在使用 Cache 使用了 file 类型,然后 file...当然你可以可以将 Cache 类型换成:Redis、Memcached

1.5K20

全局梳理、分析、总结 laravel 核心概念

访问控制(节流) Laravel 包含了一个 middleware 用于控制应用程序对路由访问。如果想要使用, 请将 throttle 中间件分配给一个路由或者一个路由组。...要生成路由缓存,只需执行 artisan 命令 php artisan route:cache 运行此命令后,将在每个请求加载缓存路由文件。...记住,如果添加了任何新路由,则需要重新生成新路由缓存。因此,您应该在项目部署时候运行 route:cache 命令。...您可以使用 route:clear 命令来清除路由缓存: php artisan route:clear 04 — 中间件 laravel 中间件想必大家不会那么陌生吧。它自带了一些中间件。...可通过 $except 数组属性设置在维护模式下仍能访问网址。

6K41

Laravel 中编写第一个 Artisan 命令

我们在执行 php artisan 命令artisan 就指的是根目录下 artisan 文件,所以命令需要在应用根目录下执行,然后 artisan 之后部门都是作为请求参数被控制台应用获取并处理...内置 Artisan 命令 运行 php artisan list 命令后,你会看到新安装 Laravel 应用默认提供了很多 Artisan 命令,我们不可能把每一个都讲一遍下来(实际,我们会在每篇教程中分散提到...:只包含 auth:clear-resets,用于从数据库清除已过期密码 Token cache:应用缓存相关命令 config:config:cache 用于缓存应用配置,config:clear...view:view:cache 用于编译应用所有 Blade 模板,view:clear 用于清除这些编译文件 编写第一个 Artisan 命令 介绍完系统内置所有命令之后,我们接下来看看如何编写自定义...', function () { $this->info('欢迎访问 Laravel 学院!')

3.1K20

Laravel 队列使用实现

当队列中有邮件发送任务,队列会主动调用回调方法,并传递任务详情进去。回调方法处理完成后,单条邮件即发送完毕。其他邮件依样处理。...4 使用数据库驱动队列 4.1 生成任务表 在终端下输入 php artisan queue:table php artisan migrate 在数据库连接正常情况下,会在数据库中出现jobs...[available_at] int [created_at] int 4.2 创建任务类 php artisan make:job SendEmail 在终端内执行上述命令,会自动生成...php artisan queue:work 在终端内运行上述命令即可。该命令还有诸多参数,如deamon、tries等,可根据需要指定。...任务执行失败原因有很多,如传参错误尝试次数超过限制、超时、甚至在 handle 方法中抛出异常,均会作为失败任务处理。

2.3K41

提高Laravel应用性能方法详解

如果你想完全清除缓存,执行: php artisan config:clear 路由缓存 在laravel中,路由也需要昂贵开销。...用以下命令缓存 routes.php 文件: php artisan route:cache 请注意,它不适用于闭包。...如果你正在使用闭包,这是一个很好机会将它们移动到控制器中,因为 artisan 命令尝试编译绑定到闭包路径而不是正确控制器方法时会抛出异常。...要完全清理干净路由缓存,请运行以下命令: php artisan route:clear 类映射加载优化 在一个中型项目中,存在数百个 PHP 源文件是很正常事情,由于良好编程习惯,我们会把代码做一些分离...当您向 compsoser 请求 App\Controllers\AuthController 类,它首先在类映射中搜索直接关联。classmap 是一个由类和文件组成 1 到 1 关联数组

1.9K20

30分钟用Laravel实现一个博客

,输入命令 composer create-project --prefer-dist laravel/laravel blog 你还需要配置一个虚拟主机以提升开发效率(直接访问url,不需要 “localhost...一个用户表 users 一个博客表 blogs 一个评论表 comments 使用 Migration 创建这3张数据表 php aritsanlaravel内置命令 你可以直接在控制台输入它,则会在控制台提示你接下来你能输入命令...tinker , 当命令提示符变为 ">>>" ,你就处于tinker模式下了,此时你可以输入php代码,或者调用laravel提供全局函数,甚至引用一个类,调用静态方法或者实例化它。...') }} => 我博客 //注意这里有一个 config('app.name') 该函数其实是读取 /.env 里 APP_NAME ,且默认为 'Laravel' ,也就是说,你改 APP_NAME...一旦表单提交数据不符合 Request@rules Laravel会自动帮我们生成一个叫 $errors 数组,它存放着所有的错误信息, 我们在视图上通过判断它是否有 content 字段来判断是否是表单提交评论有问题

7.3K00

Laravel API教程:如何构建和测试RESTful API

虽然会一步步跟着做,但由于php还只停留在几年前初学阶段,以及个人英语水平所限,有些新名词可能会理解有误,翻译过程中难免出现错误之处,还请各位能见谅与指出或有能力也可以直接点击上面的链接查看英文原文。...Laravel通过Artisan-Laravel命令行工具提供了几个命令,可以通过生成文件并将其放在正确文件夹中来帮助我们。...); } } 这样,我们可以简单地运行$ php artisan db:seed,它将在run()方法中运行所有被调用类。...当没有找到资源,这将由Laravel自动返回。 500: 内部服务器错误。理想情况下,你不会明确地返回这个,但如果有意外中断,这是你用户将要收到。 503: 暂停服务。...为此,我们需要添加DatabaseMigrations trait,然后添加一个Artisan  call在我们setUp()方法

20.3K20

Laravel5.3之bootstrap源码解析

Laravel在入口index.php先加载Composer加载器:Laravel5.2之Composer自动加载,然后进行Application实例化:Laravel5.3之IoC Container.../config.php // 通过php artisan config:cache命令来生成缓存文件,把config/下所有配置文件打包成一个文件,提高程序执行速度 /...(-1); // 出现错误,抛出throw new ErrorException set_error_handler([$this, 'handleError']);...注册Facades 在路由文件中经常会出现Route::get()这样写法,但实际并没有Route类,Route只是\Illuminate\Support\Facades\Route::class外观类别名...OK, 程序启动所做准备工作就聊完了,过程不复杂,只需一步步拆解就能基本清楚Laravel启动做了哪些具体工作。 总结:本文主要学习了Laravel启动七步准备工作:1.

7K51

Laravel学习笔记之bootstrap源码解析

Laravel在入口index.php先加载Composer加载器:Laravel学习笔记之Composer自动加载,然后进行Application实例化:Laravel学习笔记之IoC Container.../config.php // 通过php artisan config:cache命令来生成缓存文件,把config/下所有配置文件打包成一个文件,提高程序执行速度 /...(-1); // 出现错误,抛出throw new ErrorException set_error_handler([$this, 'handleError']);...注册Facades 在路由文件中经常会出现Route::get()这样写法,但实际并没有Route类,Route只是\Illuminate\Support\Facades\Route::class外观类别名...OK, 程序启动所做准备工作就聊完了,过程不复杂,只需一步步拆解就能基本清楚Laravel启动做了哪些具体工作。 总结:本文主要学习了Laravel启动七步准备工作:1.

3.9K00

基于 Redis 在 Laravel 中实现消息队列及底层源码探究

在 PHP 中,可以使用原生数组函数或者 SplQueue 类很轻松地实现队列这种数据结构,不过这里我们介绍是 Redis,所以还可以借助 Redis 自带列表类型来实现。...异步处理进程 Laravel 提供了多个 Artisan 命令来处理消息队列,这些 Artisan 命令源码位于 vendor/laravel/framework/src/Illuminate/Queue...process 方法会调用 RedisJob 定义 fire 方法执行对应任务逻辑(更底层调用是 Redis 封装任务类处理方法): public function process($connectionName...然后定义一个任务类作为推送到队列系统消息数据,Laravel 提供了 make:job Artisan 命令来快速生成任务类: php artisan make:job PostViewsIncrement...任务类(消息数据)推送成功后,就可以通过 Laravel 提供 Artisan 命令 queue:work 作为处理进程来监听并消费队列中任务类了: php artisan queue:work

6.2K30

路由使用进阶(二)

由于路由参数({task})和方法参数(task)一样,并且我们约定了 task 类型为 \App\Models\Task,Laravel 就会判定这是一个路由模型绑定,每次访问这个路由,应用会将传入参数值赋值给...所谓兜底路由,就是当路由文件中定义所有路由都无法匹配用户请求 URL ,用来处理用户请求路由,在此之前,Laravel 都会通过异常处理器为这种请求返回 404 响应,使用兜底路由好处是我们可以对这类请求进行统计并进行一些自定义操作...所谓频率限制,指的是在指定时间单个用户对某个路由访问次数限制,该功能有两个使用场景,一个是在某些需要验证/认证页面限制用户失败尝试次数,提高系统安全性,另一个是避免非正常用户(比如爬虫)对路由过度频繁访问...php artisan route:cache 如果想要删除路由缓存,可以运行: php artisan route:clear 路由缓存对系统性能提升应该是微乎其微,但如果你很在意那几毫秒,则可以考虑...,但是需要付出代价是不能使用任何闭包路由,此外,由于使用路由缓存需要在每次变动路由后重新生成缓存,所以建议在应用部署脚本中执行 php artisan route:cache(运行此命令之前先要清理之前缓存

8.5K40

【译】深入研究 Laravel 依赖注入容器

不幸是官方文档并没有涵盖所有可用功能,因此,我决定尝试写文档为自己记录一下。以下是基于Laravel 5.4.26,其他版本可能有所不同。...依赖注入简介 我不会尝试在这里解释DI/IOC背后原理,如果你不熟悉它们,你可能需要去阅读由Fabien Potencier(Symfony框架作者)创建什么是依赖注入 访问容器 在Laravel中有几种访问...注意: 如果你读了官方文档,它使用 $this->app代替 $container (在Laravel应用程序中,它实际是Container一个子类,称为Application这就是为什么称为助手...(MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS); }); 每次需要数据库接口,都会创建并使用一个新MySQLDatabase实例,并使用指定配置...单例(Singletons) 在使用自动绑定和 bind(),每次需要都会创建一个新实例(或者调用闭包)。

4.6K70
领券