关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error

什么是ThinkSNS ?

ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案。

1.png

这是 https://github.com/overtrue/pinyin 首页 README 中的持续集成状态。

之前有朋友问我,这个 travis 状态时 error 能用么?肯定是能用,我们来看下 travis 上什么地方错误了:

2.png

已经显示出来了,其中单元测试失败的是 php 5.5 和 php 5.6 我们随便点击一个进去看看
3.png

超过 10m 没有收到输出,所以 travis 认为构建是有问题的。其实吧~确实有问题,个人也苦恼了很久,没有收到输出的构建是 tests/GeneratorFileDictLoaderTest.php 这个测试类测试的是 Overtrue\Pinyin\GeneratorFileDictLoader 这个加载器。

解释下这个加载器,因为拼音库是基于词库的,而词库非常大,在很多场景下内存中是不允许载入这么多的数据的。所以这个加载器利用 php5.5+ 的 Generator (生成器)特性来生成数据,而生成数据的代价就是需要大量的磁盘 IO 以及增加 >90% 的允许时间。(PHP 官方文档中有说明)。

travis 认为构建失败原因:这个问题本身可能存在于 PHP 5.5 & 5.6 的文件系统(看 PHP 改动日志是有改动的)造成了假死,再加上 travis 本身 IO 能力比较低。所以造成生成器同时打开多个文件流之后就假死了。

如何修复
额~我是来搞笑的。。。。并不知道如何解决构建失败的问题,这个问题我曾经 fork 超哥的库该代码,也并没有找到好的解决方法。

可能删除这种「生成器」加载器会好吧

其实我特地发这篇文章,是想让超哥看到,研究下怎么让构建跑通

往期研发日记传送门:

《ThinkSNS+基于?Laravel master?分支【研发日记一】》

《ThinkSNS+研发中前端的抉择(webpack/Vue)踩坑日记【研发日记二】》

《基于?Laravel Route?的?ThinkSNS+ Component【研发日记三】》

《如何做到?Laravel?配置可以网站后台配置【研发日记四】》

《ThinkSNS+?如何计算字符显示长度【研发日记五】》

《基于?Laravel?的?ThinkSNS+ alpha.2?版本发布【研发日记六】》

《聊聊 Laravel 5.5 的 「自动发现」和此刻心情【研发日记七】》

《继:我朝特有需求之--英文字符占 0.5 个,中文字符占 1 个【研发日记八】》

《利用?Docker 包 Laradock 服务器部署 Laravel & ThinkSNS+ 等程序实战(多项目)【研发日记九】》

原文地址:https://blog.51cto.com/14231620/2415066

时间: 2024-07-28 12:21:05

关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error的相关文章

关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error【社交系统研发日记十】

什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).社交系统ThinkSNS团队拥有超过九年的移动互联网软件/网站/APP开发经验,涉及行业:粉丝社群.直播互动.移动医疗.电子商务.生活服务.在线教育.旅游出行.移动办公.电子杂志.休闲娱乐.企业信息等.我们的服务包括快速建站.提供技术及产品解决方案.技术支持维护,除此之外,如果你软件方案足够好,我们还能提供

Java汉字转拼音库,Pinyin4j

pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min ([email protected]).以下是一些具体的介绍和使用方式.         1.pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/ 2.下载解压后的目录结构及说明如下 (1)    doc : pinyin4j的api文档 (2)    lib : pinyin4j的jar包 (3)    src : pinyin4

拼音库创建 php

主要实现从一个数据库中获取中文名称并获取所有可能拼音的的大写字母组合.然后和名称一起导入另外一个数据库 <?php //通过查找拼音表匹配每个汉子对应首字母 function get_firstchar($keyword) { $array = array(); $temp = ""; $array = explode('[',file_get_contents("拼音库文本.txt")); //echo $array[3]; for($i=0;$i<c

Python 汉字转拼音库 pypinyin

一.初衷: 一些开源软件的配置文件中识别区分的部分用英文,那么我们在批量生成配置文件的时候,可以从CMDB导入汉字(idc_name), 然后将它转换成拼音,再或者拼接上IP地址,以便更准确的识别.例如:Smokeping的Targets配置文件,如下: +telcom menu = 中国电信 title = telcom ++yunfuxinxingshuangxian-01-61 menu = 云浮新兴双线-01 title = 61.11.11.11 host = 61.11.11.11

solr 中文分词器IKAnalyzer和拼音分词器pinyin

solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 "冬天到了天气冷了小明不想上学去了",点击右边的按钮,发现对每个字都进行分词.这不符合中国人的习惯. solr6.3.0自带中文分词包,在 \solr-6.3.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-6.3.0.jar,但是不能自定义词库 好在我们有IKAnalyzer(已无人更新

ElasticSearch安装拼音插件(pinyin)

环境介绍 集群环境如下: Ubuntu14.04 ElasticSearch 2.3.1(3节点) JDK1.8.0_60 开发环境: Windows10 JDK 1.8.0_66 Maven 3.3.3 Intellij IDEA 2016.1 下载编译Pinyin clone elasticsearch-analysis-pinyin 通过IntelliJ从git上克隆elasticsearch-analysis-pinyin工程: 修改ES版本 下载完项目后修改项目根目录下pom.xml文

[PHP]开源php拼音库的使用方法

最近要帮别人做一个php在线的汉语拼音翻译 所以找到了这样一个单个汉字的拼音转换,作者大概维护了6000+个汉字 这是项目地址 https://github.com/jifei/pinyin <?php include_once 'Pinyin.php'; echo Pinyin::getPinyin("早上好"); echo Pinyin::getShortPinyin("早上好"); ?> 只有引用作者的Pinyin.php 申明一个新的类,或者直接

自定义库引用时编译出错“collect2: error: ld returned 1 exit status”

想必很多人都遇到过这样的事情,需要写一个共享库,这个库又不能让所有的人都了解里面是怎么实现的,所以只能提供一个库出来供项目使用,可能是处于保密.核心业务的需要,这些都能够理解.笔者也写了一个简单的东西测试了一下,里面还是有不少东西. "collect2: error: ld returned 1 exit status"首先就遇到了这个问题.查了一下,这种错误网上说法也一大堆,起作用的还不多.在android系统里面加的共享库,需要加"namespace android &q

stm32的hall库新建模板编译错误: #error &quot;Please select first the target STM32F1xx device used in your application (in stm32f1xx.h file)&quot;的处理

在stm32f1xx.h file文件中找到如下代码: /* Uncomment the line below according to the target STM32L device used in your    application   */ #if !defined (STM32F100xB) && !defined (STM32F100xE) && !defined (STM32F101x6) && \    !defined (STM32F1