一种基于PHP的数据加载方法及设备技术

技术编号:19690959 阅读:38 留言:0更新日期:2018-12-08 10:57
本申请的目的是提供一种基于PHP的数据加载方法,通过在超文本预处理器PHP下创建PHP扩展框架;基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储,使得静态数据被加载存储在PHP系统本身的PHP内核中,故而在静态数据被加载获取后,则可以避免静态数据的数据源在宕机之后不会影响到PHP系统的运行;并为所述PHP内核中的所述静态数据配置调用函数;当需要调用该静态数据时,就可以通过所述调用函数直接去所述PHP内核中去查找,并从所述PHP内核中调用查找到的对应的静态数据,不仅避免了从外界获取静态数据所产生的任何磁盘IO开销,还避免了网络开销和TCP协议的延时,从而实现高速高效地获取静态数据。

【技术实现步骤摘要】
一种基于PHP的数据加载方法及设备
本申请涉及计算机领域,尤其涉及一种基于PHP的数据加载方法及设备。
技术介绍
现有技术中,系统在开发过程中,存在很多用于指示存在一定对应关系或很少变化的静态数据,比如股票600519对应代表茅台股份,index.tpl对应代表首页的一个模板,所以在网站开发过程中,HypertextPreprocessor(超文本预处理器,PHP)需要频繁的调用这些静态数据用来给用户做展示,或者在后台做运算等操作。为了加载静态数据,现有的典型的静态数据加载处理方法如下:一、以文件配置静态数据:config.php<?php$config[‘600519’]=“茅台股份”;?>以文件配置静态数据具体为:在本机硬盘(或者本机挂载的网络硬盘)上生成一个静态数据的配置文件比如config.php,本地PHP脚本动态的加载该静态数据的配置文件config.php获取该静态数据。例如,通过PHP脚本加载上面的配置文件config.php后,变量$config这个数组就赋值了,所以如果要获取600519的名称,就只要使用$config[‘600519’]就可以,直接通过几行代码即可实现对静态数据的加载。但一个配置文件不能包含过多的数据(不超过1M),太大了会导致加载速度过慢;又由于配置文件的动态读取,会导致磁盘IO过大和增加CPU压力,进而影响服务器性能;还由于每次都要动态加载文件,会导致PHP频繁做重复性操作。二、用数据库做静态数据存储配置,以MYSQL为例:DatabasechangedMySQ>select*fromconfig3;Keyvalue600519茅台股份1rowsinset(0.00sec)用数据库做静态数据存储配置具体为:静态数据预先存储在数据库里,PHP需要静态数据时,会从数据库中获取。例如,在MYSQL数据库里增加一个库,比如叫config库,再在该库下增加一个配置表叫做config3,在该表下创建2个字段,一个字段叫key,另外一个字段名字叫value,再把所需要的数据比如600519对应的茅台股份写入到该表,所以只要PHP网站需要预先配置的该静态数据时,就直接到该MYSQL数据库里去检索key等于相应值的数据即可。但由于通过TCP协议获取静态数据,TCP协议有3次握手,会产生不可避免的协议延时;且MYSQL数据库和PHP服务一般不在同一个服务器,故而还会受到网络波动影响而导致网络延时;同时数据库需要做高可用,否则一旦数据库down掉了,会导致PHP无法获取到静态数据的风险;若大规模的读取静态数据的话,会导致数据库压力很大,很容易达到IO/CPU瓶颈有可能会成为配置静态数据的瓶颈。三、用内存型缓存做静态数据存储,以REDIS配置为例:redis127.0.0.1:637>redis127.0.0.1:637>get23576“www.23576.com”redis127.0.0.1:637>get74526“www.74526.com”redis127.0.0.1:637>用内存型缓存做静态数据存储具体为:首先准备好一个REDIS,再把所需要的数据以Key->value的格式存入到REDIS里去,比如23576对应www.23576.com,23576对应www.23576.com;例如,PHP脚本如果要获取key=23576的数据,就只要先连接REDIS,再通过REDIS命令$redis->get(“23576”)就能获取到所需要的静态数据。但由于REDIS是内存型缓存,所以存储的数据容量大小受服务器内存的限制;又由于需要通过TCP协议获取静态数据,TCP协议有3次握手,会产生不可避免的协议延时;同时REDIS和PHP服务一般不在同一个服务器,所以还会受到网络波动影响而导致网络延时;又由于REDIS需要做高可用,否则一旦数据库down掉了,会导致PHP无法获取到数据的风险。因此,上述三种静态数据加载的方法中,要么导致增加磁盘IO和CPU负担,要么存在网络延时,TCP协议延时,甚至还要手动建立高可用存储。进而如何实现静态数据的有效加载成为亟待解决的问题。
技术实现思路
本申请的一个目的是提供一种基于PHP的数据加载方法及设备,以解决现有技术中的静态数据加载过程中导致的增加磁盘IO、网络延时、TCP延时及建立高可用存储的瓶颈等的问题。根据本申请的一个方面,提供了一种基于PHP的数据加载方法,其中,所述方法包括:在超文本预处理器PHP下创建PHP扩展框架;基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储;为所述PHP内核中的所述静态数据配置调用函数;通过所述调用函数从所述PHP内核中调用对应的静态数据。进一步地,上述基于PHP的数据加载方法中,所述基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储,包括:基于所述PHP框架将静态数据加载至所述PHP内核中;根据预设的数据存储规则对加载的所述静态数据进行存储。进一步地,上述基于PHP的数据加载方法中,所述预设的数据存储规则包括数据表及其对应的参数键和所述参数键的键值。进一步地,上述基于PHP的数据加载方法中,所述通过所述调用函数从所述PHP内核中调用对应的静态数据,包括:从用户设备获取数据需求;通过所述调用函数从所述PHP内核中调用与所述数据需求对应的静态数据;将所述与所述数据需求对应的静态数据发送给所述用户设备。进一步地,上述基于PHP的数据加载方法中,所述方法还包括:从用户设备获取数据需求;若通过所述调用函数从所述PHP内核中未查找到与所述数据需求对应的静态数据,则向所述用户设备发送调用失败提示信息。进一步地,上述基于PHP的数据加载方法中,所述方法还包括:创建一守护线程;通过所述守护线程从所述数据存储设备中获取更新的静态数据;将所述更新的静态数据加载并存储至所述PHP内核中。进一步地,上述基于PHP的数据加载方法中,若所述更新的静态数据包括所述数据存储设备中已删除的静态数据,则通过所述守护线程将所述已删除的静态数据对应的从所述PHP内核中删除。进一步地,上述基于PHP的数据加载方法中,通过所述守护线程从所述数据存储设备中获取更新的静态数据,包括:通过所述守护线程,实时或周期性的从所述数据存储设备中获取更新的静态数据。根据本申请的另一方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如上述基于PHP的数据加载方法。根据本申请的另一方面,还提供了一种基于PHP的数据加载设备,其中,该设备包括:一个或多个处理器;以及存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如上述基于PHP的数据加载方法的操作。与现有技术相比,本申请实施例中提供了一种基于PHP的数据加载方法,通过在超文本预处理器PHP下创建PHP扩展框架;基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储,使得静态数据被加载存储在PHP系统本身的PHP内核中,故而在静本文档来自技高网
...

【技术保护点】
1.一种基于PHP的数据加载方法,其中,所述方法包括:在超文本预处理器PHP下创建PHP扩展框架;基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储;为所述PHP内核中的所述静态数据配置调用函数;通过所述调用函数从所述PHP内核中调用对应的静态数据。

【技术特征摘要】
1.一种基于PHP的数据加载方法,其中,所述方法包括:在超文本预处理器PHP下创建PHP扩展框架;基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储;为所述PHP内核中的所述静态数据配置调用函数;通过所述调用函数从所述PHP内核中调用对应的静态数据。2.根据权利要求1所述的方法,其中,所述基于所述PHP扩展框架将数据存储设备中的静态数据加载至所述PHP的内核中并进行存储,包括:基于所述PHP框架将静态数据加载至所述PHP内核中;根据预设的数据存储规则对加载的所述静态数据进行存储。3.根据权利要求2所述的方法,其中,所述预设的数据存储规则包括数据表及其对应的参数键和所述参数键的键值。4.根据权利要求1所述的方法,其中,所述通过所述调用函数从所述PHP内核中调用对应的静态数据,包括:从用户设备获取数据需求;通过所述调用函数从所述PHP内核中调用与所述数据需求对应的静态数据;将所述与所述数据需求对应的静态数据发送给所述用户设备。5.根据权利要求1所述的方法,其中,所述方法还包括:从用户设备获取数据需...

【专利技术属性】
技术研发人员:彭志文朱先智
申请(专利权)人:上海恺英网络科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1