php抓取网页匹配url(1.介绍的TFUMS项目的配置文件格式的效率不高)

优采云 发布时间: 2022-02-04 14:11

  php抓取网页匹配url(1.介绍的TFUMS项目的配置文件格式的效率不高)

  1. 简介

  1.1 简介

  富哥的TFUMS项目的配置文件其实是一个PHP程序文件。虽然使用PHP程序文件作为项目的配置文件更加灵活,但感觉还是差了一点。

  Java 项目使用 XML 作为项目的配置文件。XML格式可以容纳更复杂的配置参数,读起来很清晰。但是,PHP 对 XML 格式的文档的读取天生就有点不足,并且无法将 XML 格式转换为 PHP 数组,而且 PHP 解析 XML 格式的效率也不是很高。

  PHP语言解析器的配置文件为INI格式。INI格式不如XML格式,能适应更复杂的配置参数,但用起来也够用了。最重要的是PHP解析INI格式非常方便。一个 parse_ini_file 函数 您可以将 INI 文档中的配置参数转换为 PHP 数组。既然是保证效率的内置函数,就这样吧~~

  2. PHP格式配置文件

  付哥首先给出了当前TFUMS项目的配置文件,这是一个标准的PHP程序文件,通过TFConfig对象设置项目参数。

  2.1个配置文件

  use TFPHP\Database\SQL\TFDO;

use TFPHP\System\TFLog;

use TFPHP\System\TFConfig;

TFConfig::set("default", array(

    'driver'=>TFDO::T_MYSQL,

    'host'=>"mysql",

    'port'=>3306,

    'user'=>"tfums",

    'pass'=>"abcdef",

    'db'=>"tfums",

    'charset'=>"utf8",

), "TFDO");

TFConfig::set("default", array(

    'host'=>"redis",

    'port'=>6379,

    'pass'=>"tongfu.net",

    'db'=>"tfums",

), "TFRedis");

TFConfig::set("default", array(

    'host'=>"elasticsearch",

    'port'=>9200,

    'db'=>"tfums"

), "TFElasticsearch");

TFConfig::set("charset", "UTF-8", "system");

TFConfig::set("domain", "192.168.1.168", "system");

TFConfig::set("apiUrl", "http://php-nginx-tfums/api/", "system");

TFConfig::set("outUrl", "http://192.168.1.168/tfums/", "system");

TFConfig::set("baseUri", "/", "system");

TFConfig::set("systemLogLevel", TFLog::T_INFO, "system");

TFConfig::set("projectAESPK", md5("福哥的TFUMS系统基于TFPHP框架"), "system");

TFConfig::set("SMTPArgs", array(

    'host'=>"smtp.tongfu.net",

    'port'=>25,

    'user'=>"tfums@tongfu.net",

    'pwd'=>"cba321",

    'email'=>"tfums@tongfu.net"

), "system");

TFConfig::set("imageDirArgs", array(

    "dirs"=>array(

        "img3"=>array(

            "path"=>"/tongfu.net/web/TFHomeImg3/",

            "requestUri"=>"/img3/"

        )

    ),

    "default"=>"img3"

), "system");

TFConfig::set("defaultUserImages", array(

    'icon'=>"/images/usericon.jpg",

    'style'=>"/images/userstyle.jpg",

), "system");

TFConfig::set("bindEmailTemplateArgs", array(

    'subject'=>"亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱",

    'body'=>"亲爱的{userName},你好!

请点击下面的链接完成邮箱绑定操作!

{link}</a>

TFUMS

tfums@tongfu.net

"

), "system");

  2.2 数据源

  这里面有3个数据源,分别是MySQL数据源、Redis数据源和ES数据源,都是数组的形式。

  TFConfig::set("default", array(

    &#39;driver&#39;=>TFDO::T_MYSQL,

    &#39;host&#39;=>"mysql",

    &#39;port&#39;=>3306,

    &#39;user&#39;=>"tfums",

    &#39;pass&#39;=>"abcdef",

    &#39;db&#39;=>"tfums",

    &#39;charset&#39;=>"utf8",

), "TFDO");

TFConfig::set("default", array(

    &#39;host&#39;=>"redis",

    &#39;port&#39;=>6379,

    &#39;pass&#39;=>"tongfu.net",

    &#39;db&#39;=>"tfums",

), "TFRedis");

TFConfig::set("default", array(

    &#39;host&#39;=>"elasticsearch",

    &#39;port&#39;=>9200,

    &#39;db&#39;=>"tfums"

), "TFElasticsearch");

  2.3 环境参数

  这里是一个系统环境参数,都是简单的字符串参数。

  TFConfig::set("charset", "UTF-8", "system");

TFConfig::set("domain", "192.168.1.168", "system");

TFConfig::set("apiUrl", "http://php-nginx-tfums/api/", "system");

TFConfig::set("outUrl", "http://192.168.1.168/tfums/", "system");

TFConfig::set("baseUri", "/", "system");

TFConfig::set("systemLogLevel", TFLog::T_INFO, "system");

TFConfig::set("projectAESPK", md5("福哥的TFUMS系统基于TFPHP框架"), "system");

  2.4 函数参数

  函数参数所针对的一些系统函数的参数一般是数组类型的参数,甚至是多级参数。

  TFConfig::set("SMTPArgs", array(

    &#39;host&#39;=>"smtp.tongfu.net",

    &#39;port&#39;=>25,

    &#39;user&#39;=>"tfums@tongfu.net",

    &#39;pwd&#39;=>"cba321",

    &#39;email&#39;=>"tfums@tongfu.net"

), "system");

TFConfig::set("imageDirArgs", array(

    "dirs"=>array(

        "img3"=>array(

            "path"=>"/tongfu.net/web/TFHomeImg3/",

            "requestUri"=>"/img3/"

        )

    ),

    "default"=>"img3"

), "system");

TFConfig::set("defaultUserImages", array(

    &#39;icon&#39;=>"/images/usericon.jpg",

    &#39;style&#39;=>"/images/userstyle.jpg",

), "system");

TFConfig::set("bindEmailTemplateArgs", array(

    &#39;subject&#39;=>"亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱",

    &#39;body&#39;=>"亲爱的{userName},你好!

请点击下面的链接完成邮箱绑定操作!

{link}</a>

TFUMS

tfums@tongfu.net

"

), "system");

  3. INI 格式配置文件

  虽然INI格式也可以通过section、key、value实现二维数组结构,但INI格式毕竟没有PHP语言的自由度。所以 Fugo 需要一些技巧来将 TFUMS 项目的配置文件转换为 INI 格式。

  3.1 配置文件

  [TFDO]

default[driver] = MySQL

default[host] = mysql

default[port] = 3306

default[user] = root

default[pass] = abcdef

default[db] = tfums

default[charset] = utf8

[TFRedis]

default[host] = redis

default[port] = 6379

default[pass] = tongfu.net

default[db] = tfums

[TFElasticsearch]

default[host] = elasticsearch

default[port] = 9200

default[db] = tfums

[system]

charset = UTF-8

domain = 192.168.1.168

apiUrl = http://php-nginx-tfums/api/

outUrl = http://192.168.1.168/tfums/

baseUri = /

systemLogLevel = info

projectAESPK = 86fbd7cec5a89700760c167e85acdab8

imageDirsPath[img3] = /tongfu.net/web/TFHomeImg3/

imageDirsRequestURI[img3] = /img3/

imageDirDefault = img3

SMTP[host] = smtp.tongfu.net

SMTP[port] = 25

SMTP[user] = tfums@tongfu.net

SMTP[pwd] = cba321

SMTP[email] = tfums@tongfu.net

defaultUserImages[icon] = /images/usericon.jpg

defaultUserImages[style] = /images/userstyle.jpg

bindEmailTemplate[subject] = 亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱

bindEmailTemplate[body] = "亲爱的{userName},你好!

请点击下面的链接完成邮箱绑定操作!

{link}</a>

tfums

tfums@tongfu.net

"

  3.2 数据源

  INI文档可以通过section和key实现二维数组结构,和PHP的group+array格式一致,没问题!

  INI 文档的键也可以使用方括号格式化为数组,parse_ini_file 函数将其转换为数组参数。

  [TFDO]

default[driver] = MySQL

default[host] = mysql

default[port] = 3306

default[user] = root

default[pass] = abcdef

default[db] = tfums

default[charset] = utf8

[TFRedis]

default[host] = redis

default[port] = 6379

default[pass] = tongfu.net

default[db] = tfums

[TFElasticsearch]

default[host] = elasticsearch

default[port] = 9200

default[db] = tfums

  3.3 环境参数

  环境参数 大部分参数都是字符串,可以直接设置。另外 imageDirArgs 是一个多数组,这个 INI 格式不能固定。

  富哥的解决方案是将多维数组拆分成多个参数。当然,相应项目中的程序也必须改变。

  charset = UTF-8

domain = 192.168.1.168

apiUrl = http://php-nginx-tfums/api/

outUrl = http://192.168.1.168/tfums/

baseUri = /

systemLogLevel = info

projectAESPK = 86fbd7cec5a89700760c167e85acdab8

imageDirArgsPath[img3] = /tongfu.net/web/TFHomeImg3/

imageDirArgsRequestURI[img3] = /img3/

imageDirArgsDefault = img3

  3.4 函数参数

  函数参数都是一一对应的数组,也可以直接转换。

  这里有一种特殊情况,就是邮件模板正文中的多行字符串,需要用双引号括起来,内容中的双引号需要转义。

  SMTP[host] = smtp.tongfu.net

SMTP[port] = 25

SMTP[user] = tfums@tongfu.net

SMTP[pwd] = cba321

SMTP[email] = tfums@tongfu.net

defaultUserImages[icon] = /images/usericon.jpg

defaultUserImages[style] = /images/userstyle.jpg

bindEmailTemplate[subject] = 亲爱的{userName},请激活你的TFUMS系统账号的绑定邮箱

bindEmailTemplate[body] = "亲爱的{userName},你好!

请点击下面的链接完成邮箱绑定操作!

{link}</a>

tfums

tfums@tongfu.net

"

  3.5 INI 到 PHP 数组

  这个比较简单,就是一行代码的事情。

  $webIniArr = parse_ini_file(WEB_INF_ROOT_PATH. &#39;Conf/web.ini&#39;, true);

  转换后的 PHP 数组的结构如下。

  

  

  4. 摘要

  今天,富哥带着童鞋们,将TFUMS项目的配置文件从PHP格式的程序文件转换为INI格式的文档。使用INI文件后的配置文件看起来更像是一个配置文件。INI 文件更独立,可读性更好。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线