分类 iTXTech 下的文章

SharpFlashDetector

SharpFlashDetector 使用 PeachPie CompilerFlashDetector 引入 .NET Core 项目,然后使用 C# 调用 EmbedIO 实现了高性能的 HTTP 服务端。

数据对比

SharpFlashDetector Server,右 FDWebServer-Swoole,1000并发下的数据。

需要说明的是,本次测试的Swoole环境是运行在WSL下的,会有一定损耗。

ab -n 10000 -c 1000

2000并发

ab -n 10000 -c 2000

SimpleFramework 2.2.0

计划于 12/01/2019 发布正式版本。

特性前瞻

  • 重新设计的 autoload.php,引入 iTXTech\SimpleFramework\Initializer

    • 支持手动加载 SimpleFramework
<?php

define("SF_LOADER_AUTO_INIT", false);//禁用自动 loadSimpleFramework

require_once "autoload.php";

use iTXTech\SimpleFramework\Initializer;

Initializer::loadSimpleFramework("sf.phar");
Initializer::initTerminal(true);
Initializer::setSingleThread(false);

//...
  • 模块热更新(Module HotPatch),基于 PECL Runkit7 扩展实现,例子见 README
  • 引入 sfloader.php 自动查找 SimpleFramework,无需一个项目一个SF了!

    • SF_HOME 环境变量指向 SimpleFramework 源码目录
    • SF_ARCHIVE 环境变量指向 SimpleFrameworkPHAR
  • 全新的 Curl ,且支持多个网络接口 InterfaceSelector,支持全局代理
  • 引入预加载 ./sf p=preload.php p=phar://a.phar/preload.php ....
  • 引入 Packer,支持自定义模块打包时行为
  • 模块打包支持自定义 stubsf.json中使用"stub": "stub.php"来定义)
  • 模块打包支持加入sfloader.phpinfo.json中使用"preload": true
  • 支持自动计算模块加载顺序,移除 order
  • 同时支持 sf.jsoninfo.json

更多特性(未实现)

  • 支持在模块中使用 composer 来管理包

由于项目需要,我们建立了某日本插画网站的全站作品和图片数据库。
利用php-phash为每张图片生成了唯一的标识码,通过计算汉明距离进行匹配。
那么有了这些数据之后,就应该开始搭建图片搜索引擎了。

数据量

  • 作品数:3700万左右
  • 空间:1.9TB
  • 数据库:MongoDB 4.0.3

前端

  • pixiv.FUN RiseFront - 可通过Redis缓存搜索结果,组织搜索队列
  • NGINX - 反向代理RiseFront

后端

  • Pifrise - 全称为pixiv.FUN Reverse Image Search Engine

    • 通过连接MongoDB初始化数据,以及作品信息
    • 接口为HTTP协议
    • 只支持全部搜索
    • Java
  • AoiHammer - 开源的汉明距离搜索引擎,通过本地文件初始化数据

    • 接口为TCP ANSI协议
    • 支持摘要搜索和全部搜索
    • C++

性能

  • Pifrise

    • i5-2300 3600w 900ms
    • E5645 x2 3650w 490ms
    • Mem: 6GB
  • AoiHammer

    • F i5-2300 3600w 100~200ms
    • S i5-2300 3600w 500ms
    • Mem: 8GB