Laravel常用技巧

一、如何获取当前登录用户信息

use Auth;
class XXXController extends Controller
{
    public function xxx()
    {
        echo  Auth::user()->id; //当前登录用户ID
        echo  Auth::user()->username;//当前登录用户账号
        echo  Auth::user()->realname;//当前登录用户名称姓名
    }
}

二、使用unionall批量返回多条SQL查询结果

当需要多次查询,一次反馈时,可以使用laravel unionall 语句,将多个查询结果级联在一起进行查询,语句如下:

$ips_list = DB::table('ips')->where('network', '=', '1')->where('used', '=', '0')->limit(5);

for($n = 1; $n < $total_networks; $n++){
    $ip_list_subquery = DB::table('ips')
             ->where('network', '=', $n)
             ->where('used', '=', '0')
             ->limit(5);
    $ips_list = $ips_list->unionAll($ip_list_subquery);
}
$ips = $ips_list->get();

上述代码的级联形式如下:

$a->unionAll($b)->unionAll($c)->unionAll($d)...

比常规的包含式unionall查询性能更好:

$a->unionAll($b->unionAll($c->unionAll($d...))))

三、性能优化方法

1、常规优化

php artisan route:cache
php artisan optimize 
php artisan config:cache
composer dumpautoload -o

2、PHP开启opcache方法

3.2.1 打开php.ini文件

3.2.2 找到:[opcache],设置为:

[opcache]
; dll地址
zend_extension=php_opcache.dll
; 开关打开
opcache.enable=1
; 开启CLI
opcache.enable_cli=1
; 可用内存, 酌情而定, 单位为:Mb
opcache.memory_consumption=528
; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8
; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=10000
; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
opcache.revalidate_freq=1
; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1

 

四、Echart X轴滑动触发性能优化

使用Echart绘制曲线图,并绑定X轴滑动事件。

当滑动后,需要向服务器发起三次ajax请求。

若完全使用异步,用户滑动后,可能会发起上百次请求,但是Chrome等浏览器并发限制默认是6,会导致请求速度极慢。

经过测试后,将ajax请求最快的请求设为同步,ajax速度请求慢的设为异步体验最好。

五、常用命令

php artisan dump-autoload