数据处理方法、装置及计算机可读存储介质与流程

文档序号:17927296发布日期:2019-06-15 00:30阅读:162来源:国知局
数据处理方法、装置及计算机可读存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置及计算机可读存储介质。



背景技术:

php作为脚本web语言,因其开发和上手快,是web服务的首选开发语言。在php-fpm的机制中,在接收到请求时,php-fpm进程会创建对象,而后在该请求结束后销毁对象。

但是,由于php-fpm进程每一次都需要创建并销毁进对象,即php-fpm进程不可重复使用对象,造成可重复使用的对象重复创建,当web服务支持的体量大的时候,都会进行重构,进而造成采用php的web服务性能低。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种数据处理方法、装置及计算机可读存储介质,旨在解决现有采用php的web服务的性能低的技术问题。

为实现上述目的,本发明提供一种数据处理方法,所述数据处理方法包括以下步骤:

在接收到访问请求时,获取所述访问请求对应的统一资源定位符url;

基于所述url确定控制器名称以及控制器中的方法名称;

基于所述控制器名称,在hashmap中确定控制器对象,其中,所述hashmap的变量为静态变量;

基于所述控制器对象执行所述方法名称对应的方法。

进一步地,在一实施例中,所述基于所述控制器名称,在hashmap中确定控制器对象的步骤包括:

基于所述控制器名称确定所述控制器对象对应的key;

基于所述key,在hashmap中查找所述控制器对象。

进一步地,在一实施例中,所述在hashmap中查找所述控制器对象的步骤之后,所述数据处理方法还包括:

在hashmap中未查找到所述控制器对象时,发送错误提示信息至所述访问请求对应的终端。

进一步地,在一实施例中,所述基于所述url确定控制器名称以及控制器中的方法名称的步骤包括:

按照第一预设规则截取所述url,以获得截取数据;

基于所述截取数据,生成所述控制器名称以及控制器中的方法名称。

进一步地,在一实施例中,所述截取数据包括所述url的最后两层数据,所述基于所述截取数据,生成所述控制器名称以及控制器中的方法名称的步骤包括:

基于所述截取数据中的第一层数据生成所述控制器名称,并基于所述截取数据中的第二层数据生成控制器中的方法名称。

进一步地,在一实施例中,所述截取数据包括所述url的最后一层数据,所述基于所述截取数据,生成所述控制器名称以及控制器中的方法名称的步骤包括:

基于所述截取数据按照第二预设规则生成所述控制器名称,并基于所述截取数据按照第三预设规则生成控制器中的方法名称。

进一步地,在一实施例中,所述在接收到访问请求时,获取所述访问请求对应的统一资源定位符url的步骤之前,所述数据处理方法还包括:

获取swoole服务对应的各个进程;

启动获取到的各个所述进程,并初始化各个进程对应的控制器对象,以获得各个进程对应的控制器名称以及初始化后的控制器对象;

基于各个控制器名称以及初始化后的控制器对象更新hashmap,其中,所述hashmap的变量为静态变量。

进一步地,在一实施例中,所述初始化各个进程对应的控制器对象的步骤包括:

基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,初始化各个进程对应的控制器对象。

此外,为实现上述目的,本发明还提供一种数据处理装置,所述数据处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现前述中任一项所述的数据处理方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现前述中任一项所述的数据处理方法的步骤。

本发明通过在接收到访问请求时,获取所述访问请求对应的统一资源定位符url,接着基于所述url确定控制器名称以及控制器中的方法名称,而后基于所述控制器名称确定控制器对象,最后基于所述控制器对象执行所述方法名称对应的方法,实现了根据url调用访问请求对应的控制器对象,减少了创建控制器对象的流程,并且控制器对象为静态变量,进而在该控制器对象被调用之后,该控制器对象不被销毁,使得当前启动的控制器对象可重复使用,避免了控制器对象的重构,提高了采用php的web服务的性能。

附图说明

图1是本发明实施例方案涉及的硬件运行环境中的数据处理装置的结构示意图;

图2为本发明数据处理方法第一实施例的流程示意图;

图3为本发明数据处理方法第二实施例中基于所述控制器名称,在hashmap中确定控制器对象的步骤的细化流程示意图;

图4为本发明数据处理方法第三实施例中基于所述url确定控制器名称以及控制器中的方法名称的步骤的细化流程示意图;

图5为本发明数据处理方法第四实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境中的数据处理装置的结构示意图。

本发明实施例数据处理装置可以是pc,也可以是智能手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。

如图1所示,该数据处理装置可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,数据处理装置还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。当然,数据处理装置还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的数据处理装置结构并不构成对数据处理装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据处理程序。

在图1所示的数据处理装置中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据处理程序。

在本实施例中,数据处理装置包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的数据处理程序,其中,处理器1001调用存储器1005中存储的数据处理程序时,并执行以下操作:

在接收到访问请求时,获取所述访问请求对应的统一资源定位符url;

基于所述url确定控制器名称以及控制器中的方法名称;

基于所述控制器名称,在hashmap中确定控制器对象,其中,所述hashmap的变量为静态变量;

基于所述控制器对象执行所述方法名称对应的方法。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

基于所述控制器名称确定所述控制器对象对应的key;

基于所述key,在hashmap中查找所述控制器对象。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

在hashmap中未查找到所述控制器对象时,发送错误提示信息至所述访问请求对应的终端。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

按照第一预设规则截取所述url,以获得截取数据;

基于所述截取数据,生成所述控制器名称以及控制器中的方法名称。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

基于所述截取数据中的第一层数据生成所述控制器名称,并基于所述截取数据中的第二层数据生成控制器中的方法名称。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

基于所述截取数据按照第二预设规则生成所述控制器名称,并基于所述截取数据按照第三预设规则生成控制器中的方法名称。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

获取swoole服务对应的各个进程;

启动获取到的各个所述进程,并初始化各个进程对应的控制器对象,以获得各个进程对应的控制器名称以及初始化后的控制器对象;

基于各个控制器名称以及初始化后的控制器对象更新hashmap,其中,所述hashmap的变量为静态变量。

进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:

基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,初始化各个进程对应的控制器对象。

本发明还提供一种数据处理方法,参照图2,图2为本发明数据处理方法第一实施例的流程示意图。

在本实施例中,该数据处理方法包括以下步骤:

步骤s110,在接收到访问请求时,获取所述访问请求对应的统一资源定位符url;

在本实施例中,服务器当前已启动swoole服务,该swoole服务对应的各个进程的控制器对象已启动,并且各个控制器对象与控制器对象对应的控制器名称存储于hashmap数据结构中,hashmap数据结构的存储方式为key-value,其中,key为控制器名称,value为控制器对象,且hashmap数据结构的变量为static声明,即key、value均为静态变量,以确保hashmap数据结构中控制器对象在被调用后不会被销毁。其中,hashmap是基于哈希表的map接口的实现。此实现提供所有可选的映射操作,此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。

swoole服务对应的各个进程的控制器对象的代码存储于在同一个目录下且按照预设规则进行命名,如控制器的代码都在controller目录下,然后文件的命名可以为usercontroller.php,service层的代码都在service目录下,然后文件的命名可以为userservice.php。在启动swoole服务时,获取swoole服务对应的各个进程,启动获取到的各个进程,基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,即遍历controller目录,解析controller目录中的单个文件然后创建控制器对象,并根据文件的命名确定控制器名称,以获得各个进程对应的控制器名称以及初始化后的控制器对象;而后基于各个控制器名称以及初始化后的控制器对象更新hashmap,即按照key-value格式对应存储控制器名称以及初始化后的控制器对象。

在本实施例中,用户可通过pc、移动终端等设备发送访问请求至服务器,服务器在接收到该访问请求时,获取所述访问请求对应的url(uniformresourcelocator,统一资源定位符),例如,访问请求对应的url为http://shop.nubia.com/user/info。

步骤s120,基于所述url确定控制器名称以及控制器中的方法名称;

在本实施例中,在获取到url,根据该url确定控制器名称以及控制器中的方法名称,具体地,根据第一预设规则截取url,得到截取数据,基于该截取数据生成控制器名称以及控制器中的方法名称。

例如,url为http://shop.nubia.com/user/info时,可根据第一预设规则截取该url的最后两层,得到的截取数据为“user/info”,而后按照一定的规则根据“user/info”得到控制器名称以及控制器中的方法名称。其中,在该规则为第一层为控制器名称、第二层为控制器中的方法名称时,控制器名称为user、控制器中的方法名称为info;或者,在该规则为第一层+第一预设字符串为控制器名称、第二层+第二预设字符串为控制器中的方法名称时,控制器名称为user+第一预设字符串、控制器中的方法名称为info+第二预设字符串;或者,在该规则为第一层中第一预设位置的字符串+第三预设字符串为控制器名称、第二层中第二预设位置的字符串+预设字符串为控制器中的方法名称时,控制器名称为user中第一预设位置的字符串+第三预设字符串、控制器中的方法名称为info中第二预设位置的字符串+第四预设字符串。

步骤s130,基于所述控制器名称,在hashmap中确定控制器对象,其中,所述hashmap的变量为静态变量;

在本实施例中,在得到控制器名称时,基于所述控制器名称确定所述控制器对象对应的key,具体地,该key为该控制器名称,或者,key为该控制器名称+第五预设字符串,或者,key为该控制器名称中第三预设位置的字符串+第六预设字符串,以使得key的生成方式与hashmap中控制器名称的命名方式相同。而后基于该key,在hashmap中查找所述控制器对象。

由于hashmap的变量为静态变量,使得该控制器对象为静态变量,进而在该控制器对象被调用之后,该控制器对象不被销毁,以便于后续继续调用。

步骤s140,基于所述控制器对象执行所述方法名称对应的方法。

在本实施例中,在确定控制器对象时,确定方法名称对应的方法,并基于所述控制器对象执行方法名称对应的方法,以得到访问请求对应的访问结果,并反馈该访问结果至访问请求对应的终端,例如,该访问结果为访问请求对应的网页界面,则反馈该网页界面至访问请求对应的终端。

本实施例提出的数据处理方法,通过在接收到访问请求时,获取所述访问请求对应的统一资源定位符url,接着基于所述url确定控制器名称以及控制器中的方法名称,而后基于所述控制器名称确定控制器对象,最后基于所述控制器对象执行所述方法名称对应的方法,实现了根据url调用访问请求对应的控制器对象,减少了创建控制器对象的流程,并且控制器对象为静态变量,进而在该控制器对象被调用之后,该控制器对象不被销毁,使得当前启动的控制器对象可重复使用,避免了控制器对象的重构,提高了采用php的web服务的性能。

基于第一实施例,提出本发明数据处理方法的第二实施例,参照图3,在本实施例中,步骤s130包括:

步骤s131,基于所述控制器名称确定所述控制器对象对应的key;

步骤s132,基于所述key,在hashmap中查找所述控制器对象。

在本实施例中,在得到控制器名称时,基于所述控制器名称确定所述控制器对象对应的key,具体地,该key为该控制器名称,或者,key为该控制器名称+第五预设字符串,或者,key为该控制器名称中第三预设位置的字符串+第六预设字符串,以使得key的生成方式与hashmap中控制器名称的命名方式相同。而后基于该key,在hashmap中查找所述控制器对象。

由于,hashmap的变量为静态变量,使得该控制器对象为静态变量,进而在该控制器对象被调用之后,该控制器对象不被销毁,以便于后续继续调用。

进一步地,在步骤s132之后,该数据处理方法还包括:在hashmap中未查找到所述控制器对象时,发送错误提示信息至所述访问请求对应的终端。

在本实施例中,若hashmap中未查找到该key对应的控制器对象,则发送错误提示信息至所述访问请求对应的终端,以使该终端对应的用户输入正确的url。

本实施例提出的数据处理方法,通过基于所述控制器名称确定所述控制器对象对应的key,接着基于所述key,在hashmap中查找所述控制器对象,能够根据该key在hashmap中准确查找到访问请求对应的控制器对象,进而实现了根据url调用已创建的控制器对象,减少了创建控制器对象的流程,提高了采用php的web服务的性能。

基于第一实施例,提出本发明数据处理方法的第三实施例,参照图4,在本实施例中,步骤s120包括,

步骤s121,按照第一预设规则截取所述url,以获得截取数据;

步骤s122,基于所述截取数据,生成所述控制器名称以及控制器中的方法名称。

在本实施例中,在获取到url,根据该url确定控制器名称以及控制器中的方法名称,具体地,根据第一预设规则截取url,得到截取数据,而后基于该截取数据生成控制器名称以及控制器中的方法名称。

例如,url为http://shop.nubia.com/user/info时,可根据第一预设规则截取该url的最后两层,得到的截取数据为“user/info”,而后按照一定的规则根据“user/info”得到控制器名称以及控制器中的方法名称。

进一步地,在一实施例中,截取数据包括所述url的最后两层数据,该步骤s122包括:基于所述截取数据中的第一层数据生成所述控制器名称,并基于所述截取数据中的第二层数据生成控制器中的方法名称。

其中,将该url中字符串“/”之间的字符以及最后一个“/”之后的数据作为一层数据,在截取数据包括所述url的最后两层数据时,以url为http://shop.nubia.com/user/info为例,截取数据包括“user/info”,即截取数据中第一层数据为“user”、第二层数据为“info”,而后基于截取数据中的第一层数据“user”生成所述控制器名称,并基于截取数据中的第二层数据“info”生成控制器中的方法名称。

具体地,在该规则为第一层为控制器名称、第二层为控制器中的方法名称时,控制器名称为user、控制器中的方法名称为info;在该规则为第一层+第一预设字符串为控制器名称、第二层+第二预设字符串为控制器中的方法名称时,控制器名称为user+第一预设字符串、控制器中的方法名称为info+第二预设字符串;在该规则为第一层中第一预设位置的字符串+第三预设字符串为控制器名称、第二层中第二预设位置的字符串+预设字符串为控制器中的方法名称时,控制器名称为user中第一预设位置的字符串+第三预设字符串、控制器中的方法名称为info中第二预设位置的字符串+第四预设字符串。

进一步地,又一实施例中,截取数据包括所述url的最后一层数据,该步骤s122包括:基于所述截取数据按照第二预设规则生成所述控制器名称,并基于所述截取数据按照第三预设规则生成控制器中的方法名称。

其中,将该url中字符串“/”之间的字符以及最后一个“/”之后的数据作为一层数据,在截取数据包括所述url的最后一层数据时,以url为http://shop.nubia.com/user/info为例,截取数据包括“info”,而后基于截取数据“info”按照第二预设规则生成所述控制器名称,并基于截取数据“info”按照第三预设规则生成控制器中的方法名称。

具体地,在该第二预设规则为截取数据+第七预设字符串、第三预设规则为为截取数据+第八预设字符串时,控制器名称为info+第七预设字符串、控制器中的方法名称为info+第八预设字符串;在该第二预设规则为截取数据中第四预设位置的字符串+第七预设字符串、第三预设规则为截取数据中第五预设位置的字符串+第八预设字符串时,控制器名称为info中第四预设位置的字符串+第七预设字符串、控制器中的方法名称为info中第五预设位置的字符串+第八预设字符串,其中,该第七预设字符串以及该第八预设字符串可以为空字符串。

本实施例提出的数据处理方法,通过按照第一预设规则截取所述url,以获得截取数据,接着基于所述截取数据,生成所述控制器名称以及控制器中的方法名称,能够根据url准确得到控制器名称以及控制器中的方法名称,进而实现了根据url调用已创建的控制器对象,减少了创建控制器对象的流程,提高了采用php的web服务的性能。

基于上述实施例,提出本发明数据处理方法的第四实施例,参照图5,在本实施例中,在步骤s110之前,该数据处理方法还包括:

步骤s150,获取swoole服务对应的各个进程;

步骤s160,启动获取到的各个所述进程,并初始化各个进程对应的控制器对象,以获得各个进程对应的控制器名称以及初始化后的控制器对象;

步骤s170,基于各个控制器名称以及初始化后的控制器对象更新hashmap,其中,所述hashmap的变量为静态变量。

其中,swoole服务对应的各个进程的控制器对象的代码存储于在同一个目录下且按照预设规则进行命名,该预设规则与第一预设规则对应,以使控制器名称与根据url得到的控制器名称对应,如控制器的代码都在controller目录下,然后文件的命名可以为usercontroller.php,service层的代码都在service目录下,然后文件的命名可以为userservice.php。

在启动swoole服务时,获取swoole服务对应的各个进程,启动获取到的各个所述进程,基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,即遍历controller目录,解析controller目录中的单个文件然后创建控制器对象,并根据文件的命名确定控制器名称,已完成初始化各个进程对应的控制器对象,并获得各个进程对应的控制器名称以及初始化后的控制器对象;而后基于各个控制器名称以及初始化后的控制器对象更新hashmap,即按照key-value格式对应存储控制器名称以及初始化后的控制器对象。

进一步地,步骤s160包括,基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,初始化各个进程对应的控制器对象。

本实施例提出的数据处理方法,通过获取swoole服务对应的各个进程;接着启动获取到的各个所述进程,并初始化各个进程对应的控制器对象,以获得各个进程对应的控制器名称以及初始化后的控制器对象,而后基于各个控制器名称以及初始化后的控制器对象更新hashmap,通过在启动swoole服务,启动各个进程完成控制器对象的创建,以提前创建控制器对象,无需在调用时创建,提高访问请求的处理效率,并且控制器对象为静态变量,进而在该控制器对象被调用之后,该控制器对象不被销毁,使得当前启动的控制器对象可重复使用,避免了控制器对象的重构,进一步提高了采用php的web服务的性能。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如下操作:

在接收到访问请求时,获取所述访问请求对应的统一资源定位符url;

基于所述url确定控制器名称以及控制器中的方法名称;

基于所述控制器名称,在hashmap中确定控制器对象,其中,所述hashmap的变量为静态变量;

基于所述控制器对象执行所述方法名称对应的方法。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

基于所述控制器名称确定所述控制器对象对应的key;

基于所述key,在hashmap中查找所述控制器对象。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

在hashmap中未查找到所述控制器对象时,发送错误提示信息至所述访问请求对应的终端。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

按照第一预设规则截取所述url,以获得截取数据;

基于所述截取数据,生成所述控制器名称以及控制器中的方法名称。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

基于所述截取数据中的第一层数据生成所述控制器名称,并基于所述截取数据中的第二层数据生成控制器中的方法名称。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

基于所述截取数据按照第二预设规则生成所述控制器名称,并基于所述截取数据按照第三预设规则生成控制器中的方法名称。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

获取swoole服务对应的各个进程;

启动获取到的各个所述进程,并初始化各个进程对应的控制器对象,以获得各个进程对应的控制器名称以及初始化后的控制器对象;

基于各个控制器名称以及初始化后的控制器对象更新hashmap,其中,所述hashmap的变量为静态变量。

进一步地,所述数据处理程序被处理器执行时还实现如下操作:

基于各个进程对应的文件目录以及文件名,调用各个进程对应的publicfunctiononworkstart方法,初始化各个进程对应的控制器对象。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1