zoukankan      html  css  js  c++  java
  • 关于 Overtrue 的拼音库 overtrue/pinyin 为何 travis 为 error

    什么是ThinkSNS ?

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

    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 这个测试类测试的是 OvertruePinyinGeneratorFileDictLoader 这个加载器。

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

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

    如何修复

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

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

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

  • 相关阅读:
    Java读写锁(ReentrantReadWriteLock)学习
    水平拆分和垂直拆分理解(未完)
    MySQL 主从复制
    sharding-JDBC 实现读写分离
    Linux查看程序端口占用情况
    sharding-jdbc 实现分表
    MySQL explain
    MySQL的七种join
    MySQL建立高性能索引策略
    Nginx企业级优化
  • 原文地址:https://www.cnblogs.com/thinkSNS/p/11064236.html
Copyright © 2011-2022 走看看