手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

用ziggy来管理前端代码中的路由。

突然间不知道这个算是该放在哪个分类了,毕竟ziggy在github上的项目,也是src为PHP,dist是JS

ziggy是一个优秀的、配合laravel使用的、适合用于SAP项目的一个前端组件。对于laravel来说,他只是主要实现了一个@route的方法,放在blade模板里就行了。至于是全放还是部分放,那就看你怎么配置的了:https://github.com/tighten/ziggy#filtering-routes,比如debug相关的就应该去掉。如果前后端项目有分离,那更应该用@route(['group'])的方式来处理。
 
对于前端来说,那就更方便了,他提供了一个route的方法,可以直接用laravel路由的名字。比如route('home.index'),会生成相应的路由。如果你要用在axios或者其他里面,你得  使用url()方法,比如route('home.index').url()生成一个字符串。
 
ziggy的用法有很多,即使你不使用blade模板,官方也都提供了适用的方法,说多了也没啥用,看这里就行了:https://github.com/tighten/ziggy#filtering-routes
 
常用方法:
route('home.index') => 对应 Route::get()->name('home.index')
route('home.index',[1,2]) =>对应 Route::get('/aaa/{a}/bbb/{b}')->name('home.index') ,允许传入数据当成 参数传递
route('home.index' , {a:1,b:2}) ,同样对应上面的路由,也就是说他第二个参数除了可以传入数组外,也可以传入对象
如果你有用laravel 的route.binding功能,他生成链接的时候,会根据你在Model里的getRouteKey来输出URL,参考:https://github.com/tighten/ziggy#route-model-binding
 
更多的还是看官方吧。。。。
 

查看PHP-fpm僵尸进程并干掉它

 几个常用命令

1、pstree -ap|grep php ,这是以树型进行展示 ,如果有括号,基本上就是僵尸
2、ps -A -o stat,ppid,pid,cmd | grep -e '^[zZ]' ,如果有,那就是僵尸。毕竟都Z了
 
有兴趣的在遇到僵尸后可以strace -p跟进一下,没兴趣就直接:kill -HUP id 或者 kill -9 id了
 
当然,最好还是strace一下,这样方便排查问题,而不至于后面会频繁出现。遇到问题不要急着重启nginx和php-fpm,排查一下,不然下次可能还会出现
 
其他方法
1、ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

Tags: strace, pstree

Laravel 修改 Hash的默认driver 为Md5

写这一篇记录的时候,是因为在尝试用Nova做后台,因为是基于老的数据库,所以用户这一块在登录的时候判断密码是否正确就验证不通过了。默认laravel的hashing用的是bcrypt,而老数据库,大家都懂的,明显是md5,然后是不是加盐(salt),就看实际情况了。

对于Laravel来说,hasher的调整是在app/config/hashing.php里进行配置,但默认的是bcrypt。配置文件里直接就说了,【Supported: "bcrypt", "argon", "argon2id"】,那,MD5怎么办?

如果只是为了登录,那当然直接改Login方法就行了。如果不改Login方法,甚至想一行代码都不改,最好就是实现一个md5的驱动,同时让driver设置为md5即可。

网上的教程都是写一个Md5ServiceProvider,然后app->make('hash'),将它直接修改为Md5。这样带来的另一个问题,你反而不能直接用一些默认的方法了,比如Hash::make和Hash::check,因为整个hash都替换了。

正确的方法是,实现一个Md5的Hasher,然后,扩展一个方法出来,相当于实现了一个md5的driver,这时候再调整hashing中将driver设置为md5即可。此时,你再调用Hash::make,返回的就是md5后的结果,也支持参数(参数功能需要自己开发,比如 Hash::make('123',['salt'=>11]),即为md5加盐,也可以支持type ='suffix' 或者其他,甚至可以 double salt。so easy ~~~~)

---EOF

没有附上代码,因为实现MD5功能实在太简单了,关键的就是不要破坏性的增加或者替换功能,这才是重中之重。

laravel 插件推荐:kitloong/laravel-migrations-generator

 Laravel 默认是通过migration来创建表,大部分情况下这并没有问题,然而如果是针对一个已经存在的项目想要做迁移,那就需要将DB转换成migration文件。早些年没有什么特别好的,写debugbar的那位写了一个,但已常年不更新了。后面sequel pro有一个插件,可以将指定的表转成migration文件,但这会有一个小小的问题,即:得安装sequel pro,还得更新插件。那究竟 没有一个好的laravel插件来做这个呢?

其实现在已经有了,打开:https://github.com/kitloong/laravel-migrations-generator,你就会看到了。在最初的时候,我是搜索到这个:https://github.com/barryvdh/laravel-migration-generator,上面有提示切换成:https://github.com/Xethron/migrations-generator,然而,这个大神现在也不更新了。在laravel 5之后就没有再更新过。现在这个kitloong的就是基于Xethron的库而进行更新的。

用法也很简单,composer require --dev "kitloong/laravel-migrations-generator",然后直接命令行运行:php artisan help migrate:generate,可以看帮助。如果没有特别的需求,直接php artisan migrate:generate完事。如果只想更新指定的表,那就:php artisan migrate:generate -t tablename

不多说,试试看吧

PHP查询的时候GroupBy错误

 数据库查询的时候,报:group by 错误,也就是ONLY_FULL_GROUP_BY。

要么去改my.cnf,要么pdo的ATTR中也可以增加,但线上用的是一个很老的TP版本,而且受影响的字段不多,直接就在不需要group by的字段上加个方法:any_value进行解决。
 
例如:Db::table('model')->field('any_value(id) as id,any_value(title) as title, name')->group('name')->select(); 
Records:64312345678910»