掌桥专利:专业的专利平台
掌桥专利
首页

脚本语言进程管理方法、服务器和计算机可读存储介质

文献发布时间:2023-06-19 12:07:15


脚本语言进程管理方法、服务器和计算机可读存储介质

技术领域

本公开涉及计算机软件领域,特别涉及一种脚本语言进程管理方法、服务器和计算机可读存储介质。

背景技术

脚本语言和编译型语言的最大区别是脚本语言需要解释器,并且可以直接从源码运行程序,相对来说,脚本语言极大的方便了开发者进行程序的开发调试。

相关技术方法虽然可以做到不需要编译随改随生效,但每次都需要重新加载文件,构造类等一系列操作。

发明内容

发明人通过研究发现:基于相关技术机制,假如在同等硬件条件下需要更高性能的脚本语言应用服务,亦或者应用服务为大体量的脚本语言应用服务,那么每次重新加载的重复工作的性能开销就很大,就不可以忽略了。

鉴于以上技术问题中的至少一项,本公开提供了一种脚本语言进程管理方法、服务器和计算机可读存储介质,针对脚本语言同类型的功能处理,代码可以重复使用。

根据本公开的一个方面,提供一种脚本语言进程管理方法,包括:

接收超文本传输协议请求;

根据超文本传输协议请求路径从工作进程池中提取出对应工作进程;

调用所述工作进程,执行超文本传输协议请求对应的工作代码。

在本公开的一些实施例中,所述根据超文本传输协议请求路径从工作进程池中提取出对应工作进程包括:

访问工作进程池;

根据超文本传输协议请求路径对工作进程进行定位;

判断所述工作进程是否存在;

在所述工作进程存在的情况下,从工作进程池中提取出所述工作进程。

在本公开的一些实施例中,所述根据超文本传输协议请求路径从工作进程池中提取出对应工作进程还包括:

在所述工作进程不存在的情况下,访问工作进程工厂;

生成对应的工作进程,并将对应的工作进程放置在工作进程池中,之后执行访问工作进程池的步骤。

在本公开的一些实施例中,所述脚本语言进程管理方法还包括:

在执行超文本传输协议请求对应的工作代码之后,判断所述工作进程的生命周期是否满足预定条件;

在所述工作进程的生命周期满足预定条件的情况下,将所述工作进程放回工作进程池;

在所述工作进程的生命周期不满足预定条件的情况下,通知工作进程工厂回收所述工作进程。

在本公开的一些实施例中,所述预定条件包括工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果;

所述判断所述工作进程的生命周期是否满足预定条件包括:

在工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果的情况下,判定所述工作进程的生命周期满足预定条件;

在工作进程的使用次数大于预定次数上限、或工作进程使用中发生预期之外结果的情况下,判定所述工作进程的生命周期不满足预定条件。

在本公开的一些实施例中,所述脚本语言进程管理方法还包括:

监听工作进程脚本文件的脚本源码的改动;

在脚本文件被更新的情况下,刷新工作进程池。

根据本公开的另一方面,提供一种服务器,包括:

请求接收模块,用于接收超文本传输协议请求;

工作进程提取模块,用于根据超文本传输协议请求路径从工作进程池中提取出对应工作进程;

工作进程调用模块,用于调用所述工作进程,执行超文本传输协议请求对应的工作代码。

在本公开的一些实施例中,所述服务器用于执行实现如上述任一实施例所述的脚本语言进程管理方法的操作。

根据本公开的另一方面,提供一种服务器,包括:

存储器,用于存储指令;

处理器,用于执行所述指令,使得所述服务器执行实现如上述任一实施例所述的脚本语言进程管理方法的操作。

根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例所述的脚本语言进程管理方法。

本公开针对脚本语言同类型的功能处理,代码可以重复使用,可以实现自动化保存解析后的代码用于同类型的请求,提高脚本语言的运行效率。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本公开脚本语言进程管理方法一些实施例的示意图。

图2为本公开脚本语言进程管理方法另一些实施例的示意图。

图3为本公开脚本语言进程管理方法又一些实施例的示意图。

图4为本公开脚本语言进程管理方法又一些实施例的示意图。

图5为本公开服务器一些实施例的示意图。

图6为本公开服务器另一些实施例的示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

图1为本公开脚本语言进程管理方法一些实施例的示意图。优选的,本实施例可由本公开服务器执行。该方法包括以下步骤:

步骤11,接收HTTP(HyperText Transfer Protocol,超文本传输协议)请求。

步骤12,根据超文本传输协议请求路径从工作进程池中提取出对应工作进程。

在本公开的一些实施例中,步骤12可以包括:

步骤121,访问工作进程池。

步骤122,根据超文本传输协议请求路径对工作进程进行定位。

步骤123,判断所述工作进程是否存在。

步骤124,在所述工作进程存在的情况下,从工作进程池中提取出所述工作进程。

步骤125,在所述工作进程不存在的情况下,访问工作进程工厂。

步骤126,生成对应的工作进程,并将对应的工作进程放置在工作进程池中,之后执行步骤121。

步骤13,调用所述工作进程,执行超文本传输协议请求对应的工作代码。

在本公开的一些实施例中,所述脚本语言进程管理方法还可以包括:在执行超文本传输协议请求对应的工作代码之后,判断所述工作进程的生命周期是否满足预定条件;在所述工作进程的生命周期满足预定条件的情况下,将所述工作进程放回工作进程池;在所述工作进程的生命周期不满足预定条件的情况下,通知工作进程工厂回收所述工作进程。

在本公开的一些实施例中,所述预定条件可以包括工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果。

在本公开的一些实施例中,所述判断所述工作进程的生命周期是否满足预定条件的步骤可以包括:在工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果的情况下,判定所述工作进程的生命周期满足预定条件;在工作进程的使用次数大于预定次数上限、或工作进程使用中发生预期之外结果的情况下,判定所述工作进程的生命周期不满足预定条件。

本公开上述实施例能自动根据需求自动生成,调用,销毁Worker,保证系统正常运行。

在本公开的一些实施例中,所述脚本语言进程管理方法还可以包括:监听工作进程脚本文件的脚本源码的改动;在脚本文件被更新的情况下,自动刷新工作进程池。

在本公开的一些实施例中,服务器在收到HTTP请求之后,将数据用Socket(套接字)分发到多个工作进程Worker。Worker会把请求重新封装成Request(请求)交给现有应用进行处理。

在本公开的一些实施例中,使用Socket自定义协议分发任务步骤中,Socket接口具有固定大小的包头,其包含每个包类型,大小和二进制掩码等信息,以便验证数据完整性。

在本公开的一些实施例中,本公开上述实施例可以支持PSR(PHP标准规范)-7标准的Request,通过标准的接口规范支持多种现有的框架,提高程序的易用性,其中,PHP为Hypertext Preprocessor,超文本预处理器。

基于本公开上述实施例提供的脚本语言进程管理方法,是一种负载均衡和进程管理方法,解决了相关技术的脚本语言为了处理简单的用户请求或访问数据库,需要加载至少十几个文件,构造多个类,并解析几个配置,却在完成每项任务后,销毁进程重置所有内容并重新开始的技术问题。即,解决了相关技术刚刚加载的所有代码就变的无用了,不能用来处理另一个请求,不得不被抛弃的技术问题。

本公开上述实施例的脚本语言进程管理方法,解决了相关技术脚本语言同类型的功能处理,但代码却不能复用的技术问题。本公开上述实施例可通过修改脚本语言的负载程序,接入本公开上述实施例的Request接口;本公开上述实施例使用Socket自定义协议分发任务,Socket和HTTP请求相互转换;本公开上述实施例采用Worker的生命周期管理和Worker池刷新机制;本公开上述实施例可以支持PSR-7标准的Request请求。由此本公开上述实施例实现了自动化保存解析后的代码用于同类型的请求,提高了脚本语言的运行效率。

图2为本公开脚本语言进程管理方法另一些实施例的示意图。优选的,本实施例可由本公开服务器执行。该方法包括以下步骤:

步骤201,接收超文本传输协议请求。

步骤202,访问工作进程池。

步骤203,根据超文本传输协议请求路径对工作进程进行定位。

步骤204,判断所述工作进程是否存在。在所述工作进程存在的情况下,执行步骤207;否则,在所述工作进程不存在的情况下,执行步骤205。

步骤205,访问工作进程工厂。

步骤206,生成对应的工作进程,并将对应的工作进程放置在工作进程池中,之后步骤202。

步骤207,从工作进程池中提取出所述工作进程。

步骤208,调用所述工作进程,执行超文本传输协议请求对应的工作代码。

步骤209,判断所述工作进程的生命周期是否满足预定条件。在所述工作进程的生命周期满足预定条件的情况下,执行步骤210;否则,在所述工作进程的生命周期不满足预定条件的情况下,执行步骤211。

在本公开的一些实施例中,所述预定条件包括工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果。

所述判断所述工作进程的生命周期是否满足预定条件包括:

在本公开的一些实施例中,步骤209可以包括:在工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果的情况下,判定所述工作进程的生命周期满足预定条件;在工作进程的使用次数大于预定次数上限、或工作进程使用中发生预期之外结果的情况下,判定所述工作进程的生命周期不满足预定条件。

步骤210,将所述工作进程放回工作进程池;之后结束,不再执行本实施例的其他步骤。

步骤211,访问工作进程工厂。

步骤212,通知工作进程工厂回收所述工作进程。

在本公开的一些实施例中,所述脚本语言进程管理方法还可以包括:监听工作进程脚本文件的脚本源码的改动;在脚本文件被更新的情况下,刷新工作进程池。

本公开上述实施例可以通过实现一个服务器程序,该程序可以接受HTTP请求,然后根据请求的路径从Worker池中取出对应的Worker,并在使用完成后存回Worker池,而不是每次都杀死Worker。

本公开上述实施例的服务器程序具有完成整的Worker生命周期管理,包括Worker的自动生成,调用,销毁。

本公开上述实施例的服务器程序会自动检测脚本是否有更新,更新之后会刷新Worker池。

本公开上述实施例服务器程序能够去掉脚本语言开发中的繁重操作和其他负面因素同时,仍然保障每个应用程序的可扩展性和多样性。

本公开上述实施例的服务器程序使用Socket上的二进制流这种可靠并且在操作系统级别上得到了很好的优化的方法,来完成进程之间的通信。

图3为本公开脚本语言进程管理方法又一些实施例的示意图。优选的,本实施例可由本公开服务器执行。该方法包括以下步骤:每次请求任务都从工作池中取一个空闲的工作进程(工作程序)来执行所需任务;如果工作进程worker/process失败或死亡,将会舍弃它并创建一个替代进程;假如成功就返回工作进程池中等待下次使用。由此本公开上述实施例解决了流程不能复用的技术问题。

图4为本公开脚本语言进程管理方法又一些实施例的示意图。该实施例中,Goridge是高性能的PHP到Golang编解码器库,它可以通过本地PHP套接字和Golang net/rpc包进行工作。该库允许您以最小的占用空间,结构和[]字节支持从PHP调用Go服务方法。

与相关技术直接重构了开发框架的方案相比,本公开上述实施例通过重构负载的方式将减少脚本语言大量重复工作;本公开上述实施例可以兼容现有开发框架;本公开上述实施例的生效流程点在行业技术生效流程点之前。

本公开上述实施例的方案可以大幅提升应用服务性能,降低服务器成本,并兼容现有应用服务

本公开上述实施例的方案可以在网站和接口后端使用,从而减少了脚本语言本身所需的大量重复消耗,提高了整体性能。

图5为本公开服务器一些实施例的示意图。如图5所示,本公开服务器可以包括请求接收模块51、工作进程提取模块52和工作进程调用模块53,其中:

请求接收模块51,用于接收超文本传输协议请求。

工作进程提取模块52,用于根据超文本传输协议请求路径从工作进程池中提取出对应工作进程。

在本公开的一些实施例中,工作进程提取模块52可以用于访问工作进程池;根据超文本传输协议请求路径对工作进程进行定位;判断所述工作进程是否存在;在所述工作进程存在的情况下,从工作进程池中提取出所述工作进程。

在本公开的一些实施例中,工作进程提取模块52还可以用于在所述工作进程不存在的情况下,访问工作进程工厂;生成对应的工作进程,并将对应的工作进程放置在工作进程池中,之后执行访问工作进程池的操作。

工作进程调用模块53,用于调用所述工作进程,执行超文本传输协议请求对应的工作代码。

在本公开的一些实施例中,本公开服务器还可以用于在执行超文本传输协议请求对应的工作代码之后,判断所述工作进程的生命周期是否满足预定条件;在所述工作进程的生命周期满足预定条件的情况下,将所述工作进程放回工作进程池;在所述工作进程的生命周期不满足预定条件的情况下,通知工作进程工厂回收所述工作进程。

在本公开的一些实施例中,所述预定条件包括工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果。

在本公开的一些实施例中,本公开服务器还可以用于在工作进程的使用次数小于等于预定次数上限、且工作进程使用中未发生预期之外结果的情况下,判定所述工作进程的生命周期满足预定条件;在工作进程的使用次数大于预定次数上限、或工作进程使用中发生预期之外结果的情况下,判定所述工作进程的生命周期不满足预定条件。

在本公开的一些实施例中,在本公开的一些实施例中,本公开服务器还可以用于监听工作进程脚本文件的脚本源码的改动;在脚本文件被更新的情况下,刷新工作进程池。

在本公开的一些实施例中,所述服务器用于执行实现如上述任一实施例(例如图1-图4任一实施例)所述的脚本语言进程管理方法的操作。

基于本公开上述实施例提供的服务器,解决了相关技术脚本语言同类型的功能处理,但代码却不能复用的技术问题。本公开上述实施例可通过修改脚本语言的负载程序,接入本公开上述实施例的Request接口;本公开上述实施例使用Socket自定义协议分发任务,Socket和HTTP请求相互转换;本公开上述实施例采用Worker的生命周期管理和Worker池刷新机制;本公开上述实施例可以支持PSR-7标准的Request请求。由此本公开上述实施例实现了自动化保存解析后的代码用于同类型的请求,提高了脚本语言的运行效率。

图6为本公开服务器另一些实施例的示意图。如图6所示,本公开服务器可以包括存储器61和处理器62,其中:

存储器61,用于存储指令。

处理器62,用于执行所述指令,使得所述服务器执行实现如上述任一实施例(例如图1-图4任一实施例)所述的脚本语言进程管理方法的操作。

本公开上述实施例的服务器程序具有完成整的Worker生命周期管理,包括Worker的自动生成,调用,销毁。

本公开上述实施例的服务器程序会自动检测脚本是否有更新,更新之后会刷新Worker池。

本公开上述实施例服务器程序能够去掉脚本语言开发中的繁重操作和其他负面因素同时,仍然保障每个应用程序的可扩展性和多样性。

本公开上述实施例的服务器程序使用Socket上的二进制流这种可靠并且在操作系统级别上得到了很好的优化的方法,来完成进程之间的通信。

根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例(例如图1-图4任一实施例)所述的脚本语言进程管理方法。

基于本公开上述实施例提供的计算机可读存储介质,通过重构负载的方式将减少脚本语言大量重复工作;本公开上述实施例可以兼容现有开发框架;本公开上述实施例的生效流程点在行业技术生效流程点之前。

本公开上述实施例的方案可以大幅提升应用服务性能,降低服务器成本,并兼容现有应用服务

本公开上述实施例的方案可以在网站和接口后端使用,从而减少了脚本语言本身所需的大量重复消耗,提高了整体性能。

在上面所描述的服务器可以实现为用于执行本申请所描述功能的通用处理器、可编程逻辑控制器(PLC)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。

至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

相关技术
  • 脚本语言进程管理方法、服务器和计算机可读存储介质
  • 进程管理方法、装置、系统与计算机可读存储介质
技术分类

06120113178466