事件的使用Laravel 启动流程分析
1 | php artisan make:event UserRegistered |
cron timeout
1 | crontab定时启动任务,flock保证互斥,timeout设置超时以及报警脚本 |
杀死过期进程
1 | public function fire() |
每个文章的前10条评论一同查询出来
1 | $posts = Post::paginate(15); |
Laravel 集合
1 | https://learnku.com/laravel/t/26110 |
队列执行失败反复执行
1 | 由于报错或者什么原因队列执行失败,但是队列的 attempts一直为1,可以手动throw |
实现Schemaless
1 | mysql> CREATE TABLE users ( |
PhpSpreadsheet 导出图片到 Excel
1 | public function export($data) |
Laravel 集合的 “when” 方法
1 | $hosts = [ |
Jwtauth 自定义认证头信息
1 | 项目使用的 tymon/jwt-auth 包作为 token 的认证,过程中需要迁移项目,因为之前公司的 token 头部使用自定义的,并且他们还修改了包的头信息。就是下面头部信息。 |
ajax 实现跨域
1 | $.ajax({ |
PDO 防止 sql 注入
1 | setAttribute() 这一行是强制性的,它会告诉 PDO 禁用模拟预处理语句,并使用 real parepared statements 。这可以确保 SQL 语句和相应的值在传递到 mysql 服务器之前是不会被 PHP 解析的(禁止了所有可能的恶意 SQL 注入攻击)。虽然你可以配置文件中设置 字符集的属性 (charset=utf8),但是需要格外注意的是,老版本的 PHP( < 5.3.6)在 DSN 中是忽略字符参数的。 |
Eloquent 关系中使用 orderBy()
1 | public function productsByName() |
开闭原则
1 | Controller 类,只接受用户输入,返回输出,不需要具体处理背后的事情。当需要表单验证的时候,注入相应的 Request 类。当需要数据操作时,注入相应的 Repository 或 Service 或 Factory。 |
内存占用高,速度就会提高
1 | class a{ |
关联模型字段取别名查询不出数据
1 | https://learnku.com/articles/22489#topnav |
敏感词过滤算法
1 | // |
curl https
1 | curl请求https,需要设置ipv4访问,ipv6的话会导致解析不了域名,php代码如下: |
Laravel-Excel3.0
1 | composer require maatwebsite/excel |
数据填充功能生成中文测试数据
1 | $factory->define(App\Product::class, function (Faker\Generator $faker) { |
intervention/image 坑
1 | // 记录开始时间 |
puppeteer 采集异步加载的网页内容
1 | $ composer require spatie/browsershot |
PHP时区
1 | 1,北京英国标准时间时差是8小时。 |
You have new mail in /var/spool/mail/root
1 | tac /var/spool/mail/root |more |
对二维数组进行排序
1 | /** |
mysql orderby limit 翻页数据重复
1 | SELECT `post_title`,`post_date` FROM post WHERE `post_status`='publish' ORDER BY view_count desc LIMIT 5,5 |
消息队列处理高并发
1 | 当用户点击按钮提交购买请求时,并不直接马上执行购买请求动作,而是将请求动作存入消息列队,用户的请求到此结束,而在服务器后台,从消息列队中逐一取出请求记录,再进行数据库操作,完成处理之后,将处理结果返回给用户。由于消息队列的存取是先进先出(和栈相反),因此,所有处理将按请求顺序进行处理。由于处理是在后台一个一个完成,因此不会对服务器和数据库造成巨大压力。 |
获取这两个字符串前面的相同部分
1 | 异或运算是一种非常特殊的运算,简单的说就是“如果两个值相同,返回0|false,如果两个值不同,则返回1|true”。 |
树形结构算法
1 | /** |
PHP进程分支设计
1 | https://github.com/tangshuang/php-events-async-callback https://www.tangshuang.net/2086.html |
shell重启服务
1 | 在shell脚本中对服务进行判断,如果nginx或者httpd宕机了,就执行一条重启命令: |
Laravel IoC 服务容器类管理工具
1 | 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。 |
laravel函数
1 | //在给定值后返回字符串的其余部分。 |
路由为不区分大小写
1 | 添加中间件. LowerCaseRoutes |
数组扁平化
1 | $data = [ |
phpexcel科学计数法
1 | 拼一个 \t |
PHPExcel 在 PHP7.0 以上版本报错
1 | 'break' not in the 'loop' or 'switch' context |
foreach
1 | $data=array('a','b','c'); |
tap
1 | $items = [ |
artisan日志 root 权限解决
1 | bootstrap/app.php 中写入以下配置: |
英文字符占 0.5 个,中文字符占 1 个
1 | https://learnku.com/articles/4956/following-my-unique-needs-of-the-english-characters-accounted-for-05-chinese-characters-accounted-for-1#topnav |
bas64简历
1 | https://learnku.com/laravel/t/25907 |
PHP 排名算法支持重复排名
1 | //https://learnku.com/articles/26769 |
多个 Laravel 应用 queue 队列执行时会互串
1 | app/Libriries/helper.php ,可以写在你任何想放的地方 |
修改器
1 | <?php |
响应宏原理
1 | Response::macro('success', function ($data = [], $message = 'success') { |
队列优先级的一个坑
1 | php artisan queue:work --queue=high,low |
合成图片
1 | require 'vendor/autoload.php'; |
http code 204
1 | 204 为成功状态响应码,表示目前请求成功,但客户端不需要更新其现有页面。204 响应默认是可以被缓存的。在响应中需要包含头信息 ETag。 |
json_encode 中文
1 | public/index.php |
升级至Laravel 5.7报错setTrustedProxies() must be of the type integer
1 | 打开 App\Http\Middleware\TrustProxies |
openssl_encrypt() expects parameter 1 to be string
1 | 5.5 升级到 5.5.42 后遇到的 Cookie 序列化问题 |
多库下的DB::transaction()事务失效
1 | DB::transaction(function () use ($uid, $roleId) { |
执行时间和内存消耗
1 | function getElapsedTime(int $decimals = 2) |
速查表
1 | // 针对命令显示帮助信息 |
Laravel Excel
1 | composer require maatwebsite/excel |
模型过滤
1 | public function index() |
Laravel 配置双模板
1 | composer require whichbrowser/parser |
助手函数
1 | php artisan make:provider HelperServiceProvider |
创建无限极分类树
1 | public static function getList($catList) |
任务重复执行
1 | 当前任务还没有执行完毕的时候另一个相同的任务也会执行,从而导致任务重复。例如想象一下我们执行每分钟生成一次报告的任务,在经过一段时间后,数据量变得很大导致执行时间多于 1 分钟,这样就会导致在上一个任务还没结束的时候另一个相同的任务开始执行 |
创建一个命令
1 | $ php artisan make:command HashCommand |
自定义 Laravel 的 404 页面
1 | app/Exceptions/Handler.php 文件中修改 render 方法 |
图片处理
1 | composer require intervention/image https://learnku.com/laravel/t/30978 |
取消事件触发
1 | //获取model里面的事件 |
记录memcache mongodb运行时间
1 | cache \vendor\laravel\framework\src\Illuminate\Cache\Repository.php |
记录Redis运行时间
1 | predis |
记录guggle运行时间
1 |
|
未加密的 Cookie
1 | 默认情况下,Laravel 生成的所有 cookie 都是经过加密和签名的,防止被非法篡改。但 Laravel 也支持不对 cookie 加密,具体做法如下: |
无法获取 cookie
1 | //获取cookie的三种尝试 |
Laravel Excel 导出 csv
1 | Laravel Excel 2.0 的版本和 3.0 的版本有很大的区别,使用 composer 加载的时候要注意版本,3.0 和 2.0 的语法基本不同了 |
项目开发规范
1 | 常用的 HTTP 动词有下面五个。 |
Laravel 中 Facade
1 |
|
Laravel 默认邮箱登录改成用户名登录
1 | 默认的,Laravel 使用的是 Illuminate\Foundation\Auth\AuthenticatesUsers 这个 trait 完成登录功能的。通过观察 AuthenticatesUsers 的代码,发现下面一段很有意思的代码: |
设置错误等级
1 | /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php:12 |
图片添加水印
1 | composer require intervention/image |
Laravel 配置二级目录访问
1 | 域名 http://test.local 正常访问,对应项目地址 E:/Project/Test |
Lumen 日志自定义
1 | 1、在 Providers 目录建立 LogServiceProvider.php 文件 代码如下 |
Lumen 实时记录 SQL
1 | 1、在 Listeners 目录新建 QueryListener.php 文件 代码如下: |
替换 Word 里面变量并导出 PDF
1 | composer require phpoffice/phpword |
主键进行批量更新
1 | /** |
Laradock 中使用 beanstalkd
1 |
|
注册了多少条路由
1 | $ php artisan route:list | wc -l | awk '{print $1 - 4}' |
Laravel ORM SQL 语句查询
1 | 在 app/Providers/AppServiceProvider 中的 boot 方法中新增以下代码: |
cache
1 | use Illuminate\Support\Facades\Cache; |
Laravel 的请求是怎么到达控制器
1 |
分类列表无限分类
1 | public static function getTree($data,$pId,$level = 0){ |
获取路由
1 | $routeCollection = \Route::getRoutes(); |
自动将空字符串转为 null
1 | laravel 有一个 ConvertEmptyStringsToNull 中间件,自动将空字符串转为 null。 |
Laravel 5.5 升级到 6.0
1 | 使用 phpredis 替代 predis |
API 和 后台接口分离
1 | 发现路由数量变多后影响到了性能,这个时候需要区别不同服务器去加载不同的路由。 |
laravel路由分割
1 | Route::group(['middleware' => ['web']], function () { |
Laravel 代码生成器 https://learnku.com/laravel/t/34772 https://github.com/GooGee/Entity-Builder
接近免费的 SSL 证书 https://www.digital-sign.com.cn/register
一键生成 https 根域名证书更方便,推荐 certbot-auto 脚本
Laravel-echo-server 开发聊天室和客服功能
laravel 源码详解https://github.com/LeoYang90/laravel-source-analysis
基于 Laravel + Ant-design-pro 界面美观漂亮的后台
基于 adminLTE3、Laravel、swoole 的微服务管理平台
Laravel 融合 Elasticsearch/Algolia
Laravel 和 layui 包含基础 RBAC 权限的管理后台
Supercharged Excel exports and imports in Laravel
基于 Laravel + Ant-design 界面美观漂亮的后台
Laravel+Layim+GatewayWorker workerman 实现实时聊天功能
Laravel- 访问设备识别组件-BrowserDetect
paypal PHP-sdk 支付 / 回调 / 退款全流程
小白折腾服务器(一):docker 搭建 lnmp+ 使用 deployer 部署
整理 PC 端微信扫码支付全过程 — easywechat + Laravel 5.8
woann-chat 基于 laravelS 和 layim 的聊天系统
基于 The 996 Prohibited License 的项目Laravel-admin-select2
Laravel 5.7 和 JSON Web 令牌(tymon/jwt-auth) - 用户认证
Laravel Passport 为你的 REST API 增加用户认证功能
php设计模式 https://baijunyao.com/
Laravel Markdown Blog learnku.net
Laravel5.5 使用 Elasticsearch 做引擎
Laravel + Laravel-echo + EasyWeChat 实现微信扫码登录
Laravel 项目中使用 Elasticsearch 做引擎
Lumen/Laravel 集成 GatewayWorker (Workerman),实现简单的聊天系统.