“Laravel”的版本间的差异

来自tomtalk
跳转至: 导航搜索
Lumen 5.2 中配置邮件
Tom讨论 | 贡献
model、service、repositories、provider
 
(未显示同一用户的18个中间版本)
第55行: 第55行:
  
 
Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。这可以很容易地通过使用 Homebrew 命令来实现,像 brew install php71 和 brew install mysql。Valet 提供了一个极快的、资源消耗最少本地开发环境,非常适合只需要 PHP/MySQL 并且不需要虚拟开发环境的开发人员。
 
Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。这可以很容易地通过使用 Homebrew 命令来实现,像 brew install php71 和 brew install mysql。Valet 提供了一个极快的、资源消耗最少本地开发环境,非常适合只需要 PHP/MySQL 并且不需要虚拟开发环境的开发人员。
 +
 +
=配置=
 +
 +
==.env 配置文件适用范围==
 +
 +
.env 文件主要的作用是存储环境变量,也就是会随着环境变化的东西,比如数据库的用户名、密码、缓存驱动、时区,还有静态文件的存储路径之类的;
 +
 +
因为这些信息应该是和环境绑定的,不应该随代码的更新而变化,所以一般不会把 .env 文件放到版本控制中;
 +
 +
除了和环境绑定的环境变量,有时候一些安全系数比较高,不希望纳入版本控制的信息也会放进 .env 文件,比如第三方API的secret之类的;
 +
 +
==不太适用的内容==
 +
 +
严格来说,传统的配置信息,比如上传文件的尺寸限制,或者一些算法的阈值之类的,其实不适合放到 .env 文件中,因为这些配置项是要和代码一同更新,且所有环境下应该都是一致的;
 +
 +
但我们也经常把这些配置项放进 .env (这大概不是什么好习惯),毕竟如果这些配置项很少的话,单独建一个配置文件也有些不值的感觉……
 +
 +
==环境配置==
 +
 +
所有 Laravel 框架的配置文件都放置在 config 目录下。
 +
 +
Laravel 使用 Vance Lucas 的 DotEnv PHP 函数库来实现项目内环境变量的控制,在安装好的全新 Laravel 应用程序里,在根目录下会包含一个 .env.example 文件。
 +
 +
如果你通过 Composer 安装 Laravel,这个文件将自动被更名为 .env,否则你只能手动更改文件名。
 +
 +
当你的应用程序收到请求时,这个文件所有的变量都会被加载到 PHP 超级全局变量 $_ENV 里。你可以使用辅助函数 env 来获取这些变量的值。
 +
 +
.env 文件不应该被提交到版本控制系统,因为每个开发人员或服务器在使用应用程序时,可能需要不同的环境配置。此外,在入侵者获得你的源代码控制仓库的访问权的情况下,这会成为一个安全隐患,因为任何敏感的凭据都被暴露了。
 +
 +
不妨将 .env.example 文件放进你的应用程序,通过样本配置文件里的预设值,团队中的其他开发人员就可以清楚地知道,在运行你的应用程序时有哪些环境变量是必须有的。
 +
 +
=== .env 中的基本语法===
 +
 +
.env 中的数据按行划分, 每条数据占一行,数据之间可以有任意多的空行,读取时会自动去除前后空格。
 +
 +
<source lang="bash">
 +
KEY1=value1
 +
KEY2=value2
 +
KEY3=value3
 +
KEY4=value4
 +
</source>
 +
 +
如果 key 或者 value 中包含空格,就需要在两端加上双引号,比如这样:
 +
 +
<source lang="bash">
 +
"TEST KEY" = "test value"
 +
</source>
 +
 +
如果需要添加注释,可以使用#,比如这样:
 +
 +
<source lang="bash">
 +
#测试单行注释
 +
KEY=value #测试行末注释
 +
</source>
 +
 +
如果需要嵌套变量的话,也可以直接在 .env 中写, 借用官方的例子:
 +
 +
<source lang="bash">
 +
BASE_DIR="/var/webroot/project-root"
 +
CACHE_DIR="${BASE_DIR}/cache"
 +
TMP_DIR="${BASE_DIR}/tmp"
 +
</source>
 +
 +
=== .env 可以存储的内容===
 +
 +
前文说了,.env 是非常简单的配置文件,简单到什么程度呢?
 +
 +
它只支持一维K/V格式的配置项,而且 key 和 value 都只能是字符串。
 +
 +
那如果想存一个列表怎么办?
 +
 +
有的时候我们需要在配置文件里存一个列表,比如支付平台调用 webhook 的时候只会从固定的IP地址发起,那我们可能就会为了安全性,把这些IP地址放到一个白名单中,每次验证一下来源IP是否在名单列表之内;
 +
 +
像这种白名单列表有办法存到 .env 中么?
 +
 +
只能说……不能直接存进去,因为 .env 很简单,它的 value 只能是字符串,不过我们可以尝试变通一下,使用一个连接符(比如半角逗号,)把白名单地址拼成一个字符串,使用时再分割开:
 +
 +
<source lang="bash">
 +
WHITE_LIST=192.168.0.1,192.168.0.2,192.168.0.3
 +
</source>
 +
 +
==获取目前应用程序的环境==
 +
 +
应用程序的当前环境是由 .env 文件中的 APP_ENV 变量所决定的。你可以通过 App facade 的 environment 方法来获取该值:
 +
 +
<source lang="php">
 +
$environment = App::environment();
 +
</source>
 +
 +
你也可以传递参数至 environment 方法来确认当前环境是否与参数相符合:
 +
 +
<source lang="php">
 +
if (App::environment('local')) {
 +
    // 环境是 local
 +
}
 +
 +
if (App::environment('local', 'staging')) {
 +
    // 环境是 local 或 staging...
 +
}
 +
</source>
 +
 +
也可通过 app 辅助函数获取应用程序实例:
 +
 +
<source lang="php">
 +
$environment = app()->environment();
 +
</source>
 +
 +
==获取设置值==
 +
 +
可以使用 config 辅助函数获取你的设置值,设置值可以通过「点」语法来获取,其中包含了文件与选项的名称。你也可以指定一个默认值,当该设置选项不存在时就会返回默认值:
 +
 +
<source lang="php">
 +
$value = config('app.timezone');
 +
config(['app.timezone' => 'America/Chicago']);
 +
</source>
 +
 +
== APP_ENV可以设置成哪些值?==
 +
 +
* 开发: local
 +
* 测试: testing
 +
* 预上线: staging
 +
* 正式环境: production
  
 
=Homestead=
 
=Homestead=
第392行: 第514行:
  
 
===model、service、repositories、provider===
 
===model、service、repositories、provider===
 +
 +
<source lang='php'
 +
$user->getOriginal('gender');  //修改器取出原始值
 +
</source>
 +
 +
==在.env文件中使用变量==
 +
 +
在编辑配置文件 .env 时,下面的情况:
 +
 +
<source lang="bash">
 +
MAIL_USERNAME=hello@laravel-news.com
 +
MAIL_FROM_ADDRESS=hello@laravel-news.com
 +
 +
# 等同于
 +
 +
MAIL_USERNAME=hello@laravel-news.com
 +
MAIL_FROM_ADDRESS=${MAIL_USERNAME}
 +
</source>
 +
 +
${MAIL_USERNAME}表示取得MAIL_USERNAME字段的值,也就是说MAIL_USERNAME可以作为变量那样用。这样一来,碰到配置文件中有一样内容的地方,从此以后修改一处就OK了。
  
 
=Lumen 5.2 中配置邮件=
 
=Lumen 5.2 中配置邮件=
第406行: 第548行:
 
=技术文章收藏=
 
=技术文章收藏=
  
[http://9iphp.com/web/php/php-datetime-package-carbon.html 日期及时间处理包 Carbon 在 Laravel 中的简单使用]
+
[https://laravel-china.org/articles/6735/laravel-csrf-attack-and-defense Laravel - CSRF 攻击与防御]
 +
 
 +
[http://9iphp.com/web/php/php-datetime-package-carbon.html 日期及时间处理包Carbon在Laravel中的简单使用]
  
 
[https://phphub.org/topics/2020 十个Laravel5程序优化技巧]
 
[https://phphub.org/topics/2020 十个Laravel5程序优化技巧]
  
[http://phphub.laravel-china.org/topics/2018 如何查看 Laravel 5 的所有数据库请求]
+
[http://phphub.laravel-china.org/topics/2018 如何查看Laravel 5的所有数据库请求]
 +
 
 +
[https://laravel-china.org/articles/4805/in-laravel-your-most-commonly-used-extensions-pack 在Laravel中你最常用的扩展包]
 +
 
 +
[https://laravel-china.org/articles/4630/wake-up-and-smell-the-coffee-maintenance-of-large-php-applications-is-not-simple 维护大型PHP应用程序不简单!]
 +
 
 +
[https://laravel-china.org/articles/6111/travis-ci-series-automated-deployment-blog Travis CI系列:自动化部署博客]
 +
 
 +
[https://laravel-china.org/topics/5158/use-docker-to-integrate-laravel-to-improve-team-development-efficiency 運用Docker整合Laravel提升團隊開發效率]
 +
 
 +
[https://laravel-china.org/articles/6201/questions-and-answers-that-laravel-and-phper-interviews-may-encounter Laravel、PHPer面试可能会遇到的问题及答案]

2018年9月5日 (三) 08:41的最后版本

目录

起步

安装

  1. 下载Laravel一键安装包。
  2. 配置Web服务器虚拟主机。
  3. 将网站根目录配置为laravel5/public。
  4. 能显示Laravel文字,说明安装成功。

Laravel利用Composer来管理依赖。所以,在使用Laravel之前,请确保你的机器上安装了Composer。

通过Laravel 安装器

首先,使用 Composer 下载 Laravel 安装程序:

composer global require "laravel/installer"

确保 $HOME/.composer/vendor/bin 目录(或你的操作系统的等效目录)已经放在你的环境变量 $PATH 中,以便系统可以找到 laravel 的可执行文件。

安装之后, laravel new 命令会在你指定的目录中创建一个新的 Laravel 项目。例如,laravel new blog 命令会创建一个名为 blog 的目录,其中包含所有已经安装好的 Laravel 的依赖项:

laravel new blog

通过Composer创建项目

或者,你还可以通过在终端中运行 create-project 命令来安装 Laravel:

composer create-project --prefer-dist laravel/laravel blog

本地开发服务器

如果你在本地安装了 PHP,并且想使用 PHP 内置的开发服务器来为你的应用程序提供服务,那就使用 Artisan 命令 serve。这个命令会在 http://localhost:8000 上启动开发服务器:

php artisan serve

当然,对于本地开发来说,最好的选择还是 Homestead和Valet。

Valet还是Homestead?

Laravel还提供了另一种本地开发环境Homestead。Homestead 和 Valet 的不同之处在于目标受众和对本地开发的方式。Homestead 提供了一个完整的、具有自动化的 Nginx 配置的 Ubuntu 虚拟机。如果你想要完全虚拟化的 Linux 开发环境或 Windows/Linux,Homestead 是一个不错的选择。

Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。这可以很容易地通过使用 Homebrew 命令来实现,像 brew install php71 和 brew install mysql。Valet 提供了一个极快的、资源消耗最少本地开发环境,非常适合只需要 PHP/MySQL 并且不需要虚拟开发环境的开发人员。

配置

.env 配置文件适用范围

.env 文件主要的作用是存储环境变量,也就是会随着环境变化的东西,比如数据库的用户名、密码、缓存驱动、时区,还有静态文件的存储路径之类的;

因为这些信息应该是和环境绑定的,不应该随代码的更新而变化,所以一般不会把 .env 文件放到版本控制中;

除了和环境绑定的环境变量,有时候一些安全系数比较高,不希望纳入版本控制的信息也会放进 .env 文件,比如第三方API的secret之类的;

不太适用的内容

严格来说,传统的配置信息,比如上传文件的尺寸限制,或者一些算法的阈值之类的,其实不适合放到 .env 文件中,因为这些配置项是要和代码一同更新,且所有环境下应该都是一致的;

但我们也经常把这些配置项放进 .env (这大概不是什么好习惯),毕竟如果这些配置项很少的话,单独建一个配置文件也有些不值的感觉……

环境配置

所有 Laravel 框架的配置文件都放置在 config 目录下。

Laravel 使用 Vance Lucas 的 DotEnv PHP 函数库来实现项目内环境变量的控制,在安装好的全新 Laravel 应用程序里,在根目录下会包含一个 .env.example 文件。

如果你通过 Composer 安装 Laravel,这个文件将自动被更名为 .env,否则你只能手动更改文件名。

当你的应用程序收到请求时,这个文件所有的变量都会被加载到 PHP 超级全局变量 $_ENV 里。你可以使用辅助函数 env 来获取这些变量的值。

.env 文件不应该被提交到版本控制系统,因为每个开发人员或服务器在使用应用程序时,可能需要不同的环境配置。此外,在入侵者获得你的源代码控制仓库的访问权的情况下,这会成为一个安全隐患,因为任何敏感的凭据都被暴露了。

不妨将 .env.example 文件放进你的应用程序,通过样本配置文件里的预设值,团队中的其他开发人员就可以清楚地知道,在运行你的应用程序时有哪些环境变量是必须有的。

.env 中的基本语法

.env 中的数据按行划分, 每条数据占一行,数据之间可以有任意多的空行,读取时会自动去除前后空格。

KEY1=value1
KEY2=value2
KEY3=value3
KEY4=value4

如果 key 或者 value 中包含空格,就需要在两端加上双引号,比如这样:

"TEST KEY" = "test value"

如果需要添加注释,可以使用#,比如这样:

#测试单行注释
KEY=value #测试行末注释

如果需要嵌套变量的话,也可以直接在 .env 中写, 借用官方的例子:

BASE_DIR="/var/webroot/project-root"
CACHE_DIR="${BASE_DIR}/cache"
TMP_DIR="${BASE_DIR}/tmp"

.env 可以存储的内容

前文说了,.env 是非常简单的配置文件,简单到什么程度呢?

它只支持一维K/V格式的配置项,而且 key 和 value 都只能是字符串。

那如果想存一个列表怎么办?

有的时候我们需要在配置文件里存一个列表,比如支付平台调用 webhook 的时候只会从固定的IP地址发起,那我们可能就会为了安全性,把这些IP地址放到一个白名单中,每次验证一下来源IP是否在名单列表之内;

像这种白名单列表有办法存到 .env 中么?

只能说……不能直接存进去,因为 .env 很简单,它的 value 只能是字符串,不过我们可以尝试变通一下,使用一个连接符(比如半角逗号,)把白名单地址拼成一个字符串,使用时再分割开:

WHITE_LIST=192.168.0.1,192.168.0.2,192.168.0.3

获取目前应用程序的环境

应用程序的当前环境是由 .env 文件中的 APP_ENV 变量所决定的。你可以通过 App facade 的 environment 方法来获取该值:

$environment = App::environment();

你也可以传递参数至 environment 方法来确认当前环境是否与参数相符合:

if (App::environment('local')) {
    // 环境是 local
}
 
if (App::environment('local', 'staging')) {
    // 环境是 local 或 staging...
}

也可通过 app 辅助函数获取应用程序实例:

$environment = app()->environment();

获取设置值

可以使用 config 辅助函数获取你的设置值,设置值可以通过「点」语法来获取,其中包含了文件与选项的名称。你也可以指定一个默认值,当该设置选项不存在时就会返回默认值:

$value = config('app.timezone');
config(['app.timezone' => 'America/Chicago']);

APP_ENV可以设置成哪些值?

  • 开发: local
  • 测试: testing
  • 预上线: staging
  • 正式环境: production

Homestead

https://phphub.org/topics/2 Laravel 的 Homestead 开发环境部署

这是两年前的旧文了,不知现在是否还有效。

设置数据库连接

本机连接 vm 里 mysql 方法是:

host: 127.0.0.1

port: 33060

user: homestead

pass: secret

Is Laravel really this slow?

http://stackoverflow.com/questions/23283574/is-laravel-really-this-slow

I just started using Laravel. I've barely written any code yet, but my pages are taking nearly a second to load!

Reply 1

Laravel is not actually that slow. 500-1000ms is absurd; I got it down to 20ms in debug mode.

The problem was Vagrant/VirtualBox + shared folders. I didn't realize they incurred such a performance hit. I guess because Laravel has so many dependencies (loads ~280 files) and each of those file reads is slow, it adds up really quick.

kreeves pointed me in the right direction, this blog post describes a new feature in Vagrant 1.5 that lets you rsync your files into the VM rather than using a shared folder.

There's no native rsync client on Windows, so you'll have to use cygwin. Install it, and make sure to check off Net/rsync. Add C:\cygwin64\bin to your paths.

Reply 2

From my Hello World contest, Which one is Laravel? I think you can guess. I used docker container for the test and here is the results

To make http-response "Hello World":

Golang with log handler stdout : 6000 rps

SpringBoot with Log Handler stdout: 3600 rps

Laravel 5 with off log :230 rps

Mac安装

http://laravel-china.org/docs/5.1/homestead 按开发文档步骤安装,比较顺利。

  1. 安装Virtual Box
  2. 安装Vagrant
  3. 下载本地Lavravl项目代码
  4. 配置Homestead.yaml
  5. vagrant up
  6. vagrant reload --provision
  7. vagrant destroy --force

Windows安装

windows的安装步骤与Mac一样,只是电脑配置差异,有些问题要特别处理。


在BIOS中,开启虚拟化。

安装好Virtual Box、Vagrant,配置好Homestead.yaml后,vagrant up启动到一半不动了,直到超时退出。


在配置文件夹和站点目录

folders的map和to,配置反了,启动时vagrant找不到github_projets目录。

folders:
    - map: d:/github_projects
      to: /home/github_projects
 
sites:
    - map: laravel.example.com
      to: /home/github_projects/LaravelExample/public


运行composer install

正常启动Vagrant后,打开站点首页,报错,指示vendor目录下的文件找不到。


.ssh帐户可以注释掉
authorize: ~/.ssh/id_rsa.pub
 
keys:
    - ~/.ssh/id_rsa


cpus设置

i5CPU,双核四线程,跑了个负载。

ab -c 50 -n 2000 http://laravel.example.com/
 
cpus: 1    75.99     72.95
cpus: 2   111.95    114.54
cpus: 3   111.27    115.85
cpus: 4    92.57     95.45

从测试结果上看,cpus设为2运行效率最高。

ngnix配置文件路径

/etc/nginx

Swagger-php

SwaggerLume

https://github.com/DarkaOnLine/SwaggerLume

一、安装swagger包

composer require "darkaonline/swagger-lume 1.*"

二、为swagger配置lumen

// bootstrap/app.php
$app->withFacades();
 
// add this line before Register Container Bindings section:
$app->configure('swagger-lume');
 
// add this line in Register Service Providers section:
$app->register(\SwaggerLume\ServiceProvider::class);

三、配置及生成swagger

php artisan swagger-lume:publish-config (config/swagger-lume.php)
php artisan swagger-lume:publish
php artisan swagger-lume:generate

四、指定swagger路由

//config/swagger-lume.php
'routes' => [
    'api' => 'api-docs', // from 'api/documentation'
    'docs' => 'docs',
],

五、设置自动更新文档

//config/swagger-lume.php
 'generate_always' => env('SWAGGER_GENERATE_ALWAYS', true),

如果不设置,要手动执行swagger-lume:generate命令,文档才能看到最新变化。

Lumen

安装

安装composer

https://getcomposer.org/download/ 上下载安装文件。

利用Composer下载Lumen安装器

composer global require "laravel/lumen-installer=~1.0"
# or
composer global require "laravel/lumen-installer"

安装时包名写错了,留下包痕迹清除不了,把composer卸载,重新安装后,才能用正确的包名安装lumen。

创建Lumen运用程序

通过lumen new命令就能在你指定的目录中创建一个干净的Lumen应用程序骨架了。

lumen new app_name

部署到Web服务器

Lumen 几乎不需要任何配置就能开箱即用。你能立即开始你的编码工作了!

Lumen (5.2.8) (Laravel Components 5.2.*)

Creating custom helpers

Add the helpers.php file to your composer.json autoload files.

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "Tasky\\": "app/"
    },
    "files": [
        "app/Support/helpers.php"
    ]
},
$ composer dumpautoload

base64

Repository模式

为了保持代码的整洁性和可读性,使用Repository Pattern 是非常有用的。使用repositories使我们的Controller层不再那么啰嗦、更加解耦和易读。

杂项

Laravel的历史版本

  • Laravel 1 2011年6月9日
  • Laravel 2 2011年11月24日
  • Laravel 3 2012年2月22日
  • Laravel 4 2013年5月28日
  • Laravel 5.1 LTS 2015年6月9日
  • Laravel 5.2 2015年12月21日
  • Laravel 5.5 LTS 2017年8月30日

获取版本号

$app->get('/', function () use ($app) {
    return $app->version();
});

指定302跳转

use Illuminate\Http\RedirectResponse;
return redirect('/userInfo', 302); //默认为301

laravel 怎么截取字符串多余的用省略号表示?

str_limit($value, $limit = 100, $end = '...');

查找关联是否存在

$orders = Product_order::whereHas('user', function ($query) use ($name) {
    if ($name !== '') {
        $query->where('username', 'like', "%{$name}%");
    }
})->with('product')->where(function ($query) use ($order_number) {
    if ($order_number !== '') {
        $query->where('order_number', 'like', "%{$order_number}%");
    }
})->orderBy('id', 'desc')->paginate(10);

查看Laravel版本号的三种方法

1. PHP artisan --version

2. vim vendor/laravel/framework/src/Illuminate/Foundation/Application.php

3. 可以写在路由里。5.4版本的路由文件夹是routes。我们可以写在routes\web.php里。

Route::get('laravel-version', function(){
    $laravel = app();
    return "Your Laravel version is ".$laravel::VERSION;
});

Laravel Debugbar调试器

Debugbar package是Barry vd. Heuvel写的一个包,实现在开发过程中快速轻松地查看应用程序信息的功能。安装简单和功能强大,已经成为Laravel开发过程中的不可或缺的包之一。

安装极为简单。

composer require barryvdh/laravel-debugbar

Laravel 5.4新兵Dusk

Laravel 应用测试的背景

首先,简单回顾一下:虽然每个人在讨论测试时使用的语言有点不同,但都一致认为单元测试是负责测试隔离开来的小块的代码 ,例如在一个类中的一个方法。而应用测试,与集成测试类似,用来测试整个应用程序作为一个整体。

自从 Jeffrey Way 的 Integrated 成为 Laravel 5.1 核心,我们便获得了 ->visit() 、->get() 、->see() 等方法去描述一个浏览器访问网站的行动。而这确实改变了我们编写的应用程序测试的能力,简单地写个例子:

/** @test */
public function cta_link_functions()
{
    $this->visit('/sales-page')
        ->click('Try it now!')
        ->see('Sign up for trial')
        ->onPage('trial-signup');
}

对后台而言,它就等于一个 PHP 的启动请求,通过我们的应用程序传递这个请求,去抓取 DOM,然后提出更多的请求,直到整条代码链完成。 从而做到在不需要浏览器的情况下去模拟浏览器的行为。

传统测试方式带来的问题

但如果应用程序的功能依赖了 JavaScript,那该怎么办?毕竟这不是一个真正的浏览器,难以要求它去注意到你的 JavaScript。

随着时间的推移,在 Laravel 应用程序中使用和测试 JavaScript 组件的愿望不断增多,对于 Laravel 提供的工具无法测试大部分应用程序的不满也越来越多。

重要概念及应用

facade、helper

model、service、repositories、provider

getOriginal('gender');  //修改器取出原始值

在.env文件中使用变量

在编辑配置文件 .env 时,下面的情况:

MAIL_USERNAME=hello@laravel-news.com
MAIL_FROM_ADDRESS=hello@laravel-news.com
 
# 等同于
 
MAIL_USERNAME=hello@laravel-news.com
MAIL_FROM_ADDRESS=${MAIL_USERNAME}

${MAIL_USERNAME}表示取得MAIL_USERNAME字段的值,也就是说MAIL_USERNAME可以作为变量那样用。这样一来,碰到配置文件中有一样内容的地方,从此以后修改一处就OK了。

Lumen 5.2 中配置邮件

https://laravel-china.org/topics/1974

Laravel 5.5 LTS

距离上一代 LTS (即 5.1)感觉已经好遥远了呢!

  • Laravel Horizon ,它为Laravel Redis队列提供了一个漂亮的仪表板和代码驱动的配置系统。Horizon的仪表板是一个Vue单页应用,可以使用命令composer require laravel/horizon直接安装进已有的应用中。它提供队列工作负载、最近作业、失败作业、作业重试、吞吐量和运行时指标、进程计数的实时显示。
  • 我们再熟悉不过的PHP错误处理框架,有一个漂亮拉风的错误页面。

技术文章收藏

Laravel - CSRF 攻击与防御

日期及时间处理包Carbon在Laravel中的简单使用

十个Laravel5程序优化技巧

如何查看Laravel 5的所有数据库请求

在Laravel中你最常用的扩展包

维护大型PHP应用程序不简单!

Travis CI系列:自动化部署博客

運用Docker整合Laravel提升團隊開發效率

Laravel、PHPer面试可能会遇到的问题及答案