溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于 Overtrue 的拼音庫 overtrue/pinyin 為何 travis 為 error

發(fā)布時間:2020-06-27 03:07:09 來源:網(wǎng)絡(luò) 閱讀:525 作者:ThinkSNS官方 欄目:軟件技術(shù)

什么是ThinkSNS ?

ThinkSNS(簡稱TS),一款全平臺綜合性社交系統(tǒng),為國內(nèi)外大中小企業(yè)和創(chuàng)業(yè)者提供社會化軟件研發(fā)及技術(shù)解決方案。

關(guān)于 Overtrue 的拼音庫 overtrue/pinyin 為何 travis 為 error1.png

這是 https://github.com/overtrue/pinyin 首頁 README 中的持續(xù)集成狀態(tài)。

之前有朋友問我,這個 travis 狀態(tài)時 error 能用么?肯定是能用,我們來看下 travis 上什么地方錯誤了:

關(guān)于 Overtrue 的拼音庫 overtrue/pinyin 為何 travis 為 error2.png

已經(jīng)顯示出來了,其中單元測試失敗的是 php 5.5 和 php 5.6 我們隨便點擊一個進去看看
關(guān)于 Overtrue 的拼音庫 overtrue/pinyin 為何 travis 為 error3.png

超過 10m 沒有收到輸出,所以 travis 認(rèn)為構(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 認(rèn)為構(gòu)建失敗原因:這個問題本身可能存在于 PHP 5.5 & 5.6 的文件系統(tǒng)(看 PHP 改動日志是有改動的)造成了假死,再加上 travis 本身 IO 能力比較低。所以造成生成器同時打開多個文件流之后就假死了。

如何修復(fù)
額~我是來搞笑的。。。。并不知道如何解決構(gòu)建失敗的問題,這個問題我曾經(jīng) fork 超哥的庫該代碼,也并沒有找到好的解決方法。

可能刪除這種「生成器」加載器會好吧

其實我特地發(fā)這篇文章,是想讓超哥看到,研究下怎么讓構(gòu)建跑通

往期研發(fā)日記傳送門:

《ThinkSNS+基于?Laravel master?分支【研發(fā)日記一】》

《ThinkSNS+研發(fā)中前端的抉擇(webpack/Vue)踩坑日記【研發(fā)日記二】》

《基于?Laravel Route?的?ThinkSNS+ Component【研發(fā)日記三】》

《如何做到?Laravel?配置可以網(wǎng)站后臺配置【研發(fā)日記四】》

《ThinkSNS+?如何計算字符顯示長度【研發(fā)日記五】》

《基于?Laravel?的?ThinkSNS+ alpha.2?版本發(fā)布【研發(fā)日記六】》

《聊聊 Laravel 5.5 的 「自動發(fā)現(xiàn)」和此刻心情【研發(fā)日記七】》

《繼:我朝特有需求之--英文字符占 0.5 個,中文字符占 1 個【研發(fā)日記八】》

《利用?Docker 包 Laradock 服務(wù)器部署 Laravel & ThinkSNS+ 等程序?qū)崙?zhàn)(多項目)【研發(fā)日記九】》

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI