国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Laravel php artisan optimize 源碼解讀

brianway / 2460人閱讀

摘要:確定的代碼位于的中這樣一看,其實(shí)就是將文件刪除,而這個(gè)是會(huì)自動(dòng)生成的一個(gè)數(shù)組文件,這里指定了每個(gè)和的位置和命名空間的全路徑等,在啟動(dòng)項(xiàng)目的時(shí)候,可以直接讀取使用。所以這個(gè)命令可以拆為兩步層面優(yōu)化加載速度刪除很清晰。

原文:https://www.codecasts.com/blo...

在部署 Laravel 項(xiàng)目的時(shí)候,我們經(jīng)常會(huì)使用到一個(gè)提升性能的命令:

php artisan optimize

本文來(lái)看看這個(gè)命令執(zhí)行背后的源碼:

首先我們可以使用編輯器搜 OptimizeCommand,應(yīng)該就可以找到該命令源碼的所在:
IlluminateFoundationConsoleOptimizeCommand,我們關(guān)注其中的 fire() 方法:

 public function fire()
    {
        $this->info("Generating optimized class loader");

        if ($this->option("psr")) {
            $this->composer->dumpAutoloads();
        } else {
            $this->composer->dumpOptimized();
        }

        $this->call("clear-compiled");
    }

fire() 方法,默認(rèn)情況下,會(huì)執(zhí)行$this->composer->dumpOptimized(),而這行代碼觸發(fā)的其實(shí)就是composer dump-autoload --optimize,源代碼可以在IlluminateSupportComposerdumpOptimized() 找到:

public function dumpOptimized()
    {
        $this->dumpAutoloads("--optimize");
    }

最后,optimize 命令還執(zhí)行了call("clear-compiled"),其實(shí)就是觸發(fā)php artisan clear-compiled,而很巧的是,我們也是可以直接使用編輯器搜ClearCompiledCommand 來(lái)找到源碼,位于 IlluminateFoundationConsoleClearCompiledCommand 中,這里的 fire() 方法其實(shí)關(guān)鍵的一步就是刪除了一下 cache 下的文件,我們來(lái)看:

public function fire()
    {
        $servicesPath = $this->laravel->getCachedServicesPath();

        if (file_exists($servicesPath)) {
            @unlink($servicesPath);
        }

        $this->info("The compiled services file has been removed.");
    }

通過(guò)確定 $servicesPath 的位置,再使用 @unlink($servicesPath); 刪除。

確定 $servicesPath 的代碼 $this->laravel->getCachedServicesPath() 位于 IlluminateFoundationApplicationgetCachedServicesPath 中:

 public function getCachedServicesPath()
    {
        return $this->bootstrapPath()."/cache/services.php";
    }

這樣一看,其實(shí)就是將 bootstrap/cache/services.php 文件刪除,而這個(gè) services.php 是 Laravel 會(huì)自動(dòng)生成的一個(gè)數(shù)組文件,這里指定了每個(gè) Providers 和 Facades 的位置和命名空間的全路徑等,在啟動(dòng) Laravel 項(xiàng)目的時(shí)候,可以直接讀取使用。

所以這個(gè)命令可以拆為兩步:

1.composer dump-autoload --optimize // composer 層面優(yōu)化加載速度
2.php artisan clear-compiled // 刪除 bootstrap/cache/services.php

很清晰。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/23120.html

相關(guān)文章

  • 源碼解讀php artisan serve

    摘要:原文來(lái)自在學(xué)習(xí)的時(shí)候,可能很多人接觸的第一個(gè)的命令就是,這樣我們就可以跑起第一個(gè)的應(yīng)用。本文來(lái)嘗試解讀一下這個(gè)命令行的源碼。 原文來(lái)自:https://www.codecasts.com/blo... 在學(xué)習(xí) Laravel 的時(shí)候,可能很多人接觸的第一個(gè) artisan 的命令就是:php artisan serve,這樣我們就可以跑起第一個(gè) Laravel 的應(yīng)用。本文來(lái)嘗試解讀一...

    Loong_T 評(píng)論0 收藏0
  • 源碼解讀Laravel php artisan route:cache

    摘要:然而,本文的討論重點(diǎn),還是背后的源碼,是怎么做到這一步的。從哪開(kāi)始看源碼位于你還是可以使用編輯器搜,就可以看到源碼了。第三步序列化所有路由注冊(cè)映射關(guān)系,還是在的方法中上面的方法位于中的中。所以到這里,的源碼解讀就完成了。 學(xué) Laravel 和 Vuejs 你真應(yīng)該來(lái) codecasts.com ! Laravel ?route:cache 可以直接緩存路由文件,這樣其實(shí)可以在一定程度...

    wangzy2019 評(píng)論0 收藏0
  • Laravel Service Provider 開(kāi)發(fā)時(shí)設(shè)置延遲加載時(shí)遇到的問(wèn)題

    摘要:因?qū)嶋H項(xiàng)目需求,近日在開(kāi)發(fā)包的時(shí)候,發(fā)現(xiàn)設(shè)置屬性設(shè)置為時(shí),會(huì)導(dǎo)致在方法中注冊(cè)的無(wú)效。研究源碼在中注冊(cè)無(wú)效,但是在其他中注冊(cè)有效,說(shuō)明是其他問(wèn)題。所以切記如果準(zhǔn)備采用延遲加載時(shí),嚴(yán)禁進(jìn)行注冊(cè)等系列操作。嚴(yán)禁在延遲加載的注冊(cè)和。 因?qū)嶋H項(xiàng)目需求,近日在開(kāi)發(fā) laravel-database-logger 包的時(shí)候,發(fā)現(xiàn)設(shè)置 ServiceProvider defer 屬性設(shè)置為 true ...

    Zhuxy 評(píng)論0 收藏0
  • Laravel 源碼解讀php artisan make:auth

    摘要:添加路由在方法中,通過(guò)下面幾行代碼添加路由注意這個(gè)參數(shù),就是將這個(gè)文件的內(nèi)容附加在原來(lái)路由文件的后面,并不會(huì)將原來(lái)的路由清零。 學(xué) Laravel 和 Vuejs,你真應(yīng)該來(lái) codecasts.com ,有免費(fèi)高質(zhì)量視頻! 在 Laravel 5.2 的時(shí)候,官方給我們提供了 make:auth 命令,這個(gè)命令使得我們?cè)趫?zhí)行一條命令的情況下實(shí)現(xiàn)用戶注冊(cè)和登錄,忘記密碼,找回密碼的過(guò)程...

    xorpay 評(píng)論0 收藏0
  • Laravel 5 程序優(yōu)化技巧

    摘要:使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能,之前做個(gè)一個(gè)實(shí)驗(yàn),具體請(qǐng)見(jiàn)使用提升程序性能。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說(shuō)明 性能一直是 Laravel 框架為人詬病的一個(gè)點(diǎn),所以調(diào)優(yōu) Laravel 程序算是一個(gè)必學(xué)的技能。 接下來(lái)分享一些開(kāi)發(fā)的最佳實(shí)踐,還有調(diào)優(yōu)技巧,大家有別的建議也歡迎留言討論。 這里是簡(jiǎn)單的列表: 配置信...

    habren 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<