亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用phar上線你的代碼包

MangoGoing / 3764人閱讀

摘要:在我前一陣子寫的一篇文章新版重構(gòu)之系統(tǒng)架構(gòu)中,很多人對其中提到的利用上線代碼比較感興趣,我就在這邊跟大家分享下我目前的做法?,F(xiàn)有代碼需要做何處理嗎如果你的代碼結(jié)構(gòu)比較科學(xué)比如采用大部分框架的推薦結(jié)構(gòu),那么一行都不需要改變。

在我前一陣子寫的一篇文章《新版 SegmentFault 重構(gòu)之系統(tǒng)架構(gòu)》中,很多人對其中提到的利用phar上線代碼比較感興趣,我就在這邊跟大家分享下我目前的做法。

哪些項(xiàng)目適合phar打包上線?

其實(shí)這種方法沒有什么特別的限制,只有一條,你的程序是單一入口的,對web項(xiàng)目也就是說,所有的http請求都只有一個(gè)php文件作為處理方(大多數(shù)程序就是index.php)。

如果你的程序結(jié)構(gòu)是這樣的,那么基本可以無障礙切換到這種上線模式。實(shí)際上絕大多數(shù)現(xiàn)代的php框架構(gòu)建的項(xiàng)目都是單一入口的結(jié)構(gòu)了。

現(xiàn)有代碼需要做何處理嗎?

如果你的代碼結(jié)構(gòu)比較科學(xué)(比如采用大部分框架的推薦結(jié)構(gòu)),那么一行都不需要改變。只有幾個(gè)需要注意

在項(xiàng)目里用include或者require來引用其他項(xiàng)目內(nèi)文件時(shí),最好不要直接用相對地址,而是在前面加上__DIR__常量

因?yàn)閜har包只能解析代碼文件,所以建議靜態(tài)文件多帶帶部署

OK,準(zhǔn)備工作做完后,我們就可以開始看看具體怎么部署了。為了方便大家了解,我在github上放了一個(gè)非常簡單的小例子,它的地址是

https://github.com/SegmentFault/phar-sample

從一個(gè)簡單的例子說起

這個(gè)例子的代碼結(jié)構(gòu)跟我們大多數(shù)項(xiàng)目很像,實(shí)際上我就是刻意模擬這些項(xiàng)目的代碼結(jié)構(gòu)
注意,運(yùn)行這個(gè)項(xiàng)目最好在php 5.4以上的環(huán)境中

app存放主要的邏輯代碼,比如controller, model, service 等等

lib存放一些庫文件,包括第三方的

portal其實(shí)就是項(xiàng)目的主入口了,打開你回發(fā)現(xiàn)里面只有一個(gè)文件index.php,這就是我前面提到的單一入口結(jié)構(gòu)

static存放的是靜態(tài)文件,比如js, css, 圖片等等,這個(gè)目錄需要你多帶帶部署,我們的phar包里不會打包里面的內(nèi)容,放在這里只是為了完整地展示一個(gè)項(xiàng)目結(jié)構(gòu)

build.php文件就是我們的打包腳本了

如果你的項(xiàng)目需要模版文件,可能還需要一個(gè)template目錄,在這里我就省略掉了

在瀏覽器里訪問你的項(xiàng)目地址/portal/index.php,即可看到熟悉的Hello World!字樣

這個(gè)項(xiàng)目中最重要的就是build.php這個(gè)文件了,它展示了一個(gè)經(jīng)過簡化的打包過程,實(shí)際上,稍加修改它就能用在你的項(xiàng)目中,這個(gè)文件的代碼注釋很詳細(xì),我就不重復(fù)說明了,現(xiàn)在我們在終端下運(yùn)行它

啊哦,貌似出了點(diǎn)問題,不過不要緊,這是php的一個(gè)選項(xiàng)沒有設(shè)置導(dǎo)致的,打開php.ini文件,找到;phar.readonly = On這一行,把前面的分號;去掉,然后把后面的On改為Off,然后保存再執(zhí)行這個(gè)命令

看來成功了,而且當(dāng)前目錄下已經(jīng)有了Sample.phar這個(gè)打包好的文件

如何部署phar文件

現(xiàn)在你一定對著這個(gè)phar文件感到新奇,但是又不知道如何用它,WTF!但是等等,請回到終端下執(zhí)行命令

php Sample.phar

怎么樣,現(xiàn)在你的整個(gè)項(xiàng)目就已經(jīng)被包含在這個(gè)Sample.phar文件里了,而且它還能直接被執(zhí)行,很神奇吧,那么我們應(yīng)該怎么部署它呢?

以下是我的建議

首先為每次打包的文件生成一個(gè)版本號,比如你可以在build.php加上一行

rename("Sample.phar", "Sample." . date("Ymd.His") . ".phar");

這樣每次打包后的文件就變成了類似Sample.20141111.123456.phar,而且不會重復(fù),生成不重復(fù)id的方法有很多種,我推薦這種是因?yàn)樗梢苑奖隳憧吹酱虬鼤r(shí)間,以后你做回滾的時(shí)候就可以知道要回滾到那個(gè)時(shí)間的版本,當(dāng)然你也可以把這個(gè)版本跟你的SCM版本關(guān)聯(lián)起來

然后,在線上使用另外一個(gè)入口文件引用這個(gè)包,比如線上的入口目錄/wwwroot下的index.php文件有如下代碼

require __DIR__ . "/../packages/Sample.20141111.123456.phar";

是的,只有一行就這么簡單!packages就是你存放這些打包好文件的目錄,你可以隨意放置。

我說的這些步驟都可以很方便的寫成腳本集成到你目前的自動化部署流程中。

以上的文字只是拋磚引玉,歡迎大家對這個(gè)方案提出意見,并對它做一些性能測試,如果你運(yùn)行在5.5以上的版本(默認(rèn)打開opcache),幾乎對性能沒有影響。

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/20862.html

相關(guān)文章

  • [轉(zhuǎn)] composer - 文檔 - 命令行

    摘要:模擬命令,并沒有做實(shí)際的操作。申明依賴命令增加新的依賴包到當(dāng)前目錄的文件中。你甚至可以輸入一個(gè)軟件包的版本號,來顯示該版本的詳細(xì)信息。你也可以在第三個(gè)參數(shù)中指定版本號,否則將獲取最新的版本。 原文地址 : composer 命令行 全局參數(shù) 下列參數(shù)可與每一個(gè)命令結(jié)合使用: --verbose (-v): 增加反饋信息的詳細(xì)度。 -v 表示正常輸出。 -vv 表示更詳細(xì)的輸出。 ...

    mj 評論0 收藏0
  • php-composer的安裝與使用方法(簡化版)

    摘要:中文網(wǎng)系統(tǒng)要求運(yùn)行需要以上版本。注中的路徑為相對于的路徑這個(gè)時(shí)候,你就可以調(diào)用你自己編寫的函數(shù)庫或者類庫了注本文內(nèi)容參考了中文網(wǎng),后續(xù)還會更新其它的實(shí)用功能 1.簡介 Composer 是 PHP 的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫,它會在你的項(xiàng)目中為你安裝他們?!禖omposer 中文網(wǎng)》 2.系統(tǒng)要求 運(yùn)行 Composer 需要 PHP 5.3.2+ 以上版本。C...

    mikasa 評論0 收藏0
  • Composer 簡介

    摘要:默認(rèn)情況下它不會在全局安裝任何東西。這種想法并不新鮮,受到了和的強(qiáng)烈啟發(fā)。其中一些庫依賴于其他庫。系統(tǒng)要求運(yùn)行需要以上版本。一些敏感的設(shè)置和編譯標(biāo)志也是必須的,但對于任何不兼容項(xiàng)安裝程序都會拋出警告。這是的二進(jìn)制文件。 Composer 是 PHP 的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫,它會在你的項(xiàng)目中為你安裝他們。 1. 依賴管理 Composer 不是一個(gè)包管理器...

    Code4App 評論0 收藏0
  • 一個(gè)更加容和寬泛的Composer

    摘要:一個(gè)聰明的指揮家。是個(gè)很貼心的家伙。和的目的差不多。上面原因不是全部,而且謹(jǐn)慎守規(guī)矩渠道限制也未必是壞事,但是它的確影響了的發(fā)展,而更加具有冒險(xiǎn)精神更加包容和靈活。來了年,就是發(fā)布年后的一天,及提出工具并發(fā)布第一個(gè)版本。如果是和會簡單的多。 一個(gè)聰明的指揮家。 明日北哥 sf社區(qū)直播 composer課程,感興趣的記得來看哦 https://segmentfault.com/l/15....

    張春雷 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<