
Laravel57
Laravel57
raoxiaoya
这个作者很懒,什么都没留下…
展开
-
关于 Laravel 中的请求参数 request
我们可以通过在控制器中注入一个Illuminate\Http\Request对象来获得$request请求对象。同时,可以使用这个$request对象来操作各个参数。我们找到他的父类Symfony\Component\HttpFoundation\Request在 initialize方法中找到如下片段:/** * Sets the parameters for this request. * * This method also re-initializes all propert原创 2021-04-30 11:00:49 · 1885 阅读 · 0 评论 -
Laravel框架设置时区
Laravel 框架会自动纠正时区,默认是UTC,所以当你设置好php.ini中的时区之后还需要设置 Laravel 的时区。.env 文件:APP_TIMEZONE=Asia/Shanghaiconfig/app.php 文件:‘timezone’ => env(‘APP_TIMEZONE’, ‘UTC’)...原创 2020-08-07 16:04:26 · 2955 阅读 · 0 评论 -
拦截非法昵称的初步实现
比如要拦截掉:刷票,投票,涨票,拉票。还有两端匹配:微信,或者 微xxxx信。先不考虑性能,实现一个简单版本的。public function checkNicknameAllow($nickName){ foreach(Video2Filter::query()->orderBy('sort', 'asc')->cursor() as $v){ $v['name'] = str_replace('+', '.*', $v['name']); if(preg_match("/{原创 2020-07-17 15:13:46 · 648 阅读 · 0 评论 -
为什么Laravel中的Eloquent Collection对象可以被json_encode
我们知道,在laravel框架中使用 Eloquent 模型来查询数据库返回的是 Collection对象,但是我们却可以调用 json_encode 来将其内容转换成 json 串,要知道普通的对象是没法做到这一点的。相关的文件Illuminate\Database\Eloquent\Collection.phpIlluminate\Support\Collection.php根本原理是该类实现了 json模块 的JsonSerializable接口的 jsonSerialize 方法。PHP原创 2020-07-14 16:38:54 · 1071 阅读 · 0 评论 -
Laravel中ORM方法找不到定义
使用PHPStorm开发Laravel项目,在使用ORM方法的时候居然没有参数提示。类似于这样或者这样表示不能忍。当你不清除参数的时候,可以在前面加上query()瞬间就能找到方法定义了。...原创 2020-05-08 11:44:23 · 931 阅读 · 0 评论 -
laravel配置mysql主从及使用注意
使用了主从,那么延迟就无法避免,在怎么优化也只是降低可能性而已,终究是会有延迟,既然如此,我们在操作数据库的时候就应该尽量规避出现延迟的情况。1、避免在同一个会话中对同一张表先写再读,因为读操作去的是从库,在如此小的时间间隔下从库很有可能没同步过来。2、开启事务之后,此会话的读和写将都去到主库。3、在业务上,重要的业务单独使用一个主从,避免其他业务的干扰而导致重要业务出现明显延迟,比如下单和...原创 2020-04-17 09:55:42 · 2352 阅读 · 0 评论 -
Laravel项目IP黑名单,IP白名单,IP访问频率控制中间件
<?phpnamespace App\Http\Middleware;use Closure;use App\Traits\Controller\ApiAjaxTraits;use Illuminate\Support\Facades\Redis;class GateWay{ use ApiAjaxTraits; const IP_LIMIT_NUM_...原创 2020-02-24 19:43:15 · 3232 阅读 · 0 评论 -
数据库连接池:SMProxy+Laravel
数据库连接池:SMProxy+Laravel需求环境:swoole 2.1.3+php 7.0+本机环境:Laravel 5.7smproxy 1.3.1mysql 5.7.26swoole 4.1.1php 7.1.30Swoole Mysql Proxy一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。文档:https://smproxy.lo...原创 2020-02-14 18:27:14 · 2012 阅读 · 0 评论 -
Laravel消息队列源码分析
Laravel5.7队列驱动为redis缓存驱动 CACHE_DRIVER=redisconfig/queue.php retry_after: 90 block_for: null// 配置赋值方式return new RedisQueue( $this->redis, $config['queue'], $config['connection'...原创 2020-02-12 10:03:46 · 1352 阅读 · 0 评论 -
Laravel延迟队列的实现原理
Laravel延迟队列的实现原理redis的延迟队列一般是通过有序集合zset实现的,可参考:https://blog.youkuaiyun.com/raoxiaoya/article/details/103066624实际上laravel的延迟队列也是这个原理。设置驱动为redis我们使用命令行来投递两个队列,一个普通队列,一个延迟队列public function handle(){ ...原创 2020-02-09 22:05:10 · 5312 阅读 · 0 评论 -
Laravel Eloquent读取大量记录并遍历的方法
方法1:分块结果 chunkfunction test4(){ $start = microtime(true); $num = 0; MapCity::chunk(10, function () use (&$num) { $num += 10; }); $end = microtime(true); $this-&...原创 2020-01-10 11:30:55 · 3029 阅读 · 0 评论 -
Laravel集成Maatwebsite-Laravel-Excel最新版本v3
github:https://github.com/Maatwebsite/Laravel-Excel参考文档:https://docs.laravel-excel.com/3.1/getting-started/installation.html安装1). 使用 composer 安装:composer require maatwebsite/excel此处下载的是最新版,目前是...原创 2020-01-10 10:54:40 · 1633 阅读 · 1 评论 -
Laravel中通过 Macroable 宏来扩展类的能力
我们以 Illuminate\Support\Traits\Macroable 为例分析。通过 trait 可以很方便的在任何类中使用。Laravel 提供的 Macroable 可以在不改变类结构的情况下为其扩展功能。也就是为一个类动态注入一些方法,并且和该类本身的方法用于同样的作用域。Macroable 的核心是基于匿名函数的绑定功能,关于这一块请参考:https://blog.csdn...原创 2020-01-08 19:52:33 · 1265 阅读 · 0 评论 -
Laravel的Container和Application及实例的梳理
容器Container:Illuminate\Container\Container应用Application:Illuminate\Foundation\ApplicationApplication 继承了 Containerapp是由 bootstrap/app.php 返回,并做了一些设置,所以和直接实例化得到的app不一样。项目根目录app()->basePath(...原创 2020-01-07 18:30:05 · 858 阅读 · 0 评论 -
为你的Laravel应用增加请求以及响应日志
给应用增加请求日志和响应日志是一个很不错的习惯,为日后的问题排查非常有用,尤其是那些不好复现的问题我们可以通过请求参数和响应数据来分析了。添加两个中间件app\Http\Middleware\RequestLog.php<?php/** * ---------------------------------------------------------- * date: 20...原创 2020-01-07 16:33:14 · 1812 阅读 · 0 评论 -
Laravel中的管道以及使用
管道,就是从一头进,另一头出,常用来处理一批具有先后顺序的连贯的操作,让需要终止管道,只需要返回false。在Laravel中最常见的管道使用就是中间件了,比如 路由中间件。对路由中间件的分析参考:https://blog.youkuaiyun.com/raoxiaoya/article/details/103462286了解了管道的原理之后,我们就可以愉快的使用管道来处理我们的业务了。比如:我需要对...原创 2020-01-07 16:23:07 · 954 阅读 · 0 评论 -
Laravel-API参考文档
https://laravel.com/api/5.7/Illuminate/Pipeline/Pipeline.html原创 2020-01-07 15:26:38 · 1718 阅读 · 0 评论 -
Laravel增加助手函数helpers.php文件
默认helpers.php文件加载的是系统的src/Illuminate/Foundation/helpers.phpsrc/Illuminate/Support/helpers.php如果自己想要新增helpers.php文件并实现自动加载新建 app/helpers.php内容为:<?php/** * 校验手机号合法性 */if(!function_exists('...原创 2020-01-07 14:59:49 · 1044 阅读 · 0 评论 -
Laravel57中容器绑定服务的方式和解析方式
在服务提供器中,你总是可以通过 $this->app 属性访问容器。1、bind()-简单绑定$this->app->bind(类 / 接口名 , 类 / 闭包);$this->app->bind('HelpSpot\API', function ($app) { return new HelpSpot\API($app->make('HttpC...原创 2020-01-07 10:44:44 · 965 阅读 · 0 评论 -
Laravel57 artisan详解
Laravel57 artisan详解进入根目录 php artisan listLaravel Framework 5.7.15Usage: command [options] [arguments]Options: -h, --help Display this help message -q, --quiet 抑制输出信...原创 2020-01-05 17:35:50 · 746 阅读 · 0 评论 -
Laravel 速查表
https://cs.laravel-china.org/原创 2020-01-03 18:40:21 · 616 阅读 · 1 评论 -
PHP内置的WEB服务器
在打开一个新的Lareval57项目的时候,发现在根目录下有一个server.php文件,<?php/** * Laravel - A PHP Framework For Web Artisans * * @package Laravel * @author Taylor Otwell <taylor@laravel.com> */$uri = urld...原创 2020-01-03 15:32:58 · 1134 阅读 · 0 评论 -
Laravel的加密解密与哈希
一、加密解密当你的应用程序中需要用到加密和解密的地方时可以使用Laravel自带的加密解密工具。Laravel 的加密机制使用的是 OpenSSL 所提供的 AES-256 和 AES-128 加密。强烈建议你使用 Laravel 内建的加密工具,而不是用其它的加密算法。所有 Laravel 加密之后的结果都会使用消息认证码 (MAC) 签名,使其底层值不能在加密后再次修改。相应的配置文件 ...原创 2019-12-27 14:08:18 · 4465 阅读 · 0 评论 -
laravel编写后台回写脚本
laravel编写后台回写脚本不同与队列和任务调度(定时任务),这里我要实现近似实时的后台回写进程。要求做到平滑重启,使其在完成某一次任务后自动退出进程,而不是暴力kill进程。先配置好redis创建一个commandphp artisan make:command Read3SuccessStat注册命令在kernel.php中的$commands中添加 Read3SuccessS...原创 2019-12-19 17:45:30 · 766 阅读 · 0 评论 -
laravel执行原生sql
use Illuminate\Support\Facades\DB;$sql = "SELECT id FROM cz_magazine_init WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM cz_magazine_init)-(SELECT MIN(id) FROM cz_magazine_init)) + (SE...原创 2019-12-19 15:36:33 · 4090 阅读 · 0 评论 -
Laravel和Lumen开启SQL日志记录
Laravel并不会默认打印sql,所以需要我们自己来设置。1、临时打印SQLDB::enableQueryLog();查询操作Log::debug(DB::getQueryLog());2、自动记录SQL日志方法1:监听 QueryExecuted 事件此事件是由 Illuminate\Database 提供,并且当你发起SQL的时候,此事件是被触发的,只是没有对应的监听器罢了。...原创 2019-12-19 10:41:09 · 3073 阅读 · 0 评论 -
使用composer安装的laravel插件是如何被自动加载的
使用composer安装的laravel插件是如何被自动加载的我自己也写过自动加载,主要思路是将类的命名空间和目录结构一一对应上,这样就很容易找到了,但是在laravel框架中,看到很多类的命名空间和目录完全不匹配,那么它们是怎么实现自动加载的呢?public/index.php 中 require __DIR__.'/../vendor/autoload.php';于是依次排查到了_...原创 2019-12-12 15:04:19 · 962 阅读 · 0 评论 -
如何让集群中服务器的代码同时更新
假如我们有100台同时运行有同一个项目,现在我们改了代码,需要让这100台服务器同时更新代码,该如何做呢?我们可以使用 laravel envoy 工具来实现。参考:https://blog.youkuaiyun.com/raoxiaoya/article/details/103504417...原创 2019-12-12 10:43:33 · 1731 阅读 · 0 评论 -
Laravel Envoy - SSH远程任务执行工具的配置与使用
Laravel Envoy - SSH远程任务执行工具的配置与使用目前只支持MMac和Linux上运行我们在任何一台服务器上安装 envoy 即可,由这台服务器想其他服务器发起连接,发送指令。// 安装composercurl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/compo...原创 2019-12-12 10:31:23 · 1669 阅读 · 0 评论 -
Laravel中的事件与监听,观察者模式
Laravel中的事件与监听使用的了观察者模式,观察者模式可以做到优雅的处理一连串的动作,动态的增加和减少动作,而不用去改变主线业务代码。简介Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类通常存放在 app/Events 目录中,而这些事件类的监听器则存放在 app/Listeners 中。如果你没有在你的应用中看到这些目录,别担心,它们会在你使用...原创 2019-12-10 18:59:19 · 1615 阅读 · 0 评论 -
Laravel57单元测试phpunit
首先进入Laravel57根目录,因为本机没有安装phpunitphpunit --version提示未找到命令实际上Laravel的命令在vendor/bin下将 phpunit.bat 复制到根目录,并修改第3行,修改后如下:SET BIN_TARGET=%~dp0/vendor/phpunit/phpunit/phpunitphpunit --versionPHPUnit ...原创 2019-12-10 18:55:35 · 690 阅读 · 0 评论 -
Laravel路由中间件的实现原理
Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。例如,Laravel 内置了一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以...原创 2019-12-09 18:41:46 · 2048 阅读 · 0 评论 -
php语法,对象调用动态的成员属性和方法
遇到一个这样的情况,一个对象 $obj 需要调用一个成员方法,而这个方法是动态指派的,以前不知道怎么调用,最近在laravel源码发现了这种调用,就是使用大括号。class Demo{ public $method; public function setMethod(){ $this->method = 'action'; return ...原创 2019-12-09 10:51:53 · 1264 阅读 · 0 评论 -
array_reduce与闭包嵌套
array_reduce 函数array_reduce — 用回调函数迭代地将数组简化为单一的值array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )array 输入的 array。callback callback ( mixed $carry , mixed $item ) : ...原创 2019-12-08 18:43:49 · 1061 阅读 · 0 评论 -
Laravel中编写命令行脚本,交互
在框架中编写脚本要远比自己单独写脚本要方便很多,因为你可以随便调用框架的各种功能。创建脚本文件php artisan make:command TestCommand将会在 app/Console/Commands下创建一个文件 TestCommand.php,Lumen框架不支持这个命令,需要自己手动新建文件。TestCommand.php<?phpnamespace Ap...原创 2019-12-06 09:16:22 · 1586 阅读 · 0 评论 -
PHP常驻进程如何解决数据库连接被断开
常驻进程的数据库连接是启动时初始化的,然后就一直连着,MySQL 的配置中,有一个叫做 “wait_timeout"的参数,这个参数大致的意思是这样:当一个客户端连接到 MySQL 数据库后,如果客户端不自己断开,也不做任何操作,MySQL 数据库会将这个连接保留"wait_timeout” 这么长时间(单位是 s,默认是 28800s,也就是 8 小时),超过这个时间之后,MySQL 数据库为了...原创 2019-12-02 09:30:48 · 2219 阅读 · 0 评论 -
PHP以数组的方式访问对象以及遍历
在很多框架中都提供以数组的方式访问查询的结果集对象,操作遍历,比如,Laravel,ThinkPHP,实现起来也很方便,一般是在对象的某个属性存放着记录数据,比如 attributes 私有属性。使对象实现接口1、ArrayAccess, 以数组的方式访问2、IteratorAggregate,提供一个迭代器代码:<?phpclass testObj implements Ar...原创 2019-11-26 15:57:37 · 1328 阅读 · 0 评论 -
laravel任务调度
laravel任务调度替代linux的cron来管理定时任务。一、app/Console/Kernel.php<?phpnamespace App\Console;use App\Console\Commands\Read3DepartRank;use App\Console\Commands\Read3SuccessStat;use App\Console\Command...原创 2019-11-06 17:26:27 · 1346 阅读 · 0 评论 -
laravel的消息队列功能
本例使用redis作为队列驱动。1、config/queue.phpconnections 'redis' => [ 'driver' => 'redis', 'connection' => env('QUEUE_REDIS_CONNECTION', 'default'), 'queue' => 'default',//...原创 2019-11-06 10:45:53 · 1171 阅读 · 0 评论 -
laravel创建数据表报错
在使用对列的时候需要创建失败记录表failed_jobsphp artisan queue:failed-tablephp artisan migrate报错发现是存储引擎没有设置设置env文件DB_ENGINE=InnoDB因为config/database.php 中使用的是这个配置再次使用命令php artisan migrate成功...原创 2019-10-30 09:22:38 · 1029 阅读 · 0 评论