這是 https://github.com/overtrue/pinyin 首頁 README 中的持續(xù)集成狀態(tài)。
之前有朋友問我,這個 travis 狀態(tài)時 error 能用么?肯定是能用,我們來看下 travis 上什么地方錯誤了:
已經(jīng)顯示出來了,其中單元測試失敗的是 php 5.5 和 php 5.6 我們隨便點擊一個進去看看
超過 10m 沒有收到輸出,所以 travis 認為構(gòu)建是有問題的。其實吧~確實有問題,個人也苦惱了很久,沒有收到輸出的構(gòu)建是 tests/GeneratorFileDictLoaderTest.php 這個測試類測試的是 Overtrue\Pinyin\GeneratorFileDictLoader 這個加載器。
解釋下這個加載器,因為拼音庫是基于詞庫的,而詞庫非常大,在很多場景下內(nèi)存中是不允許載入這么多的數(shù)據(jù)的。所以這個加載器利用 php5.5+的 Generator (生成器)特性來生成數(shù)據(jù),而生成數(shù)據(jù)的代價就是需要大量的磁盤 IO 以及增加 >90% 的允許時間。(PHP 官方文檔中有說明)。
travis 認為構(gòu)建失敗原因:這個問題本身可能存在于 PHP 5.5 & 5.6 的文件系統(tǒng)(看 PHP 改動日志是有改動的)造成了假死,再加上 travis 本身 IO 能力比較低。所以造成生成器同時打開多個文件流之后就假死了。
如何修復
額~我是來搞笑的。。。。并不知道如何解決構(gòu)建失敗的問題,這個問題我曾經(jīng) fork 超哥的庫該代碼,也并沒有找到好的解決方法。
可能刪除這種「生成器」加載器會好吧
其實我特地發(fā)這篇文章,是想讓超哥看到,研究下怎么讓構(gòu)建跑通
歡迎光臨 Chinaunix (http://www.72891.cn/) | Powered by Discuz! X3.2 |