首页
学习
活动
专区
工具
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和定时任务实现活跃用户统计

最近在Summer的《Laravel教程-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 的结果与错误输出到黑洞

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

    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.8K30

    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.4K20

    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.7K20

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

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

    6.1K41

    在 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

    30分钟用Laravel实现一个博客

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

    7.4K00

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

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

    20.4K20

    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.4K30

    如何在Ubuntu 16.04上使用Deployer自动部署Laravel应用程序

    使用以下命令测试连接: $ ssh -T git@mygitserver.com 如果此命令导致错误,请通过参考Git托管服务的文档检查您是否正确添加了SSH密钥,然后再次尝试连接。...打开本地计算机上的终端,使用以下命令将工作目录更改为应用程序的文件夹: $ cd /path/to/laravel-app 在此目录中,运行以下命令,该命令将创建在文件夹中调用deploy.php的laravel-app...:storage:link ✔ Executing task artisan:view:clear ✔ Executing task artisan:cache:clear ✔ Executing task...artisan:config:cache ✔ Executing task artisan:optimize ✔ Executing task deploy:symlink ✔ Executing task...如果您访问域名(http://example.com),您将看到以下页面: [Laravel界面] 在所有部署之前,您不必编辑服务器上的.env文件。

    15.6K10

    路由使用进阶(二)

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

    8.6K40

    【译】深入研究 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.7K70

    Laravel 7发行说明

    Symfony 的贡献者和 Dries Vints 贡献 Laravel 7 提供了一种新的方法,用于匹配使用 Artisan 命令 route:cache 缓存的已编译缓存路由。...有关 Laravel 7.x 中的 CORS 支持的更多信息,请查阅CORS文档。 查询时类型转换 查询时类型转换由 Matt Barlow 开发贡献....此外,运行器将在第一次测试失败时自动停止: php artisan test 可以传递给 phpunit 命令的任何参数也可以传递给 Artisan test 命令: php artisan test...当使用 Artisan 的 make 命令生成它们的相应类时,对这些桩代码所做的任何更改都会反映出来。...有时可能希望指定可以尝试多次的任务,但是如果重试是由给定数量的异常触发的,则该任务将失败。在Laravel7中,可以在任务类上定义 maxExceptions 属性: <?

    9K20
    领券