1、使用job的异步队列发送邮件,基于datadase,需要创建job表
php artisan queue:table
php artisan queue:failed-table
php artisan migrate
使用:php artisan queue:work --tries=3 面板查看任务执行情况 默认队列名为default 从job数据表看得出来,
php artisan queue:work --tries=3 --queue=send_email ,不仅可以检测还可以执行job表未完成的任务。
2、Rsync命令替代Scp 和 ftp传文件
3、第三方登录或者利用jwt的刷新token的中间件:RefreshToken.php ,然后将接口路由写进中间件的group里,其实就是重写父类的方法。
public function handle($request, Closure $next) { // 检查此次请求中是否带有 token,如果没有则抛出异常。 $this->checkForToken($request); // 使用 try 包裹,以捕捉 token 过期所抛出的 TokenExpiredException 异常 try { // 检测用户的登录状态,如果正常则通过 if ($this->auth->parseToken()->authenticate()) { return $next($request); } throw new UnauthorizedHttpException('jwt-auth', '未登录'); }catch(TokenBlacklistedException $exception){ //当用户退出之后,token就会被拉黑,就会返回TokenBlacklistedException throw new UnauthorizedHttpException('jwt-auth', '未登录'); }catch (TokenExpiredException $exception) { // 此处捕获到了 token 过期所抛出的 TokenExpiredException 异常,我们在这里需要做的是刷新该用户的 token 并将它添加到响应头中 try { // 刷新用户的 token $token = $this->auth->refresh(); // 使用一次性登录以保证此次请求的成功 Auth::guard('api')->onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']); } catch (JWTException $exception) { // 如果捕获到此异常,即代表 refresh 也过期了,用户无法刷新令牌,需要重新登录。 throw new UnauthorizedHttpException('jwt-auth', $exception->getMessage()); } } //在响应头中返回新的token return $this->setAuthenticationHeader($next($request), $token); }