进程控制装置和方法

文档序号:6380998阅读:197来源:国知局
专利名称:进程控制装置和方法
技术领域
本发明涉及网络应用领域,具体涉及一种进程控制装置和方法。
背景技术
目前的网络应用(例如360桌面或浏览器)通常会面对数千万的在线用户,大量的用户应用的情况下,消息能否及时发送,就显得非常重要,直接影响用户体验。在线用户是放在一个队列中,需要一个守护进程(Daemon)不断去处理该用户队列,现有技术中采用了使用PHP (Hypertext Preprocessor, 一种脚本语言,可以在命令行模式下执行)脚本的定时任务,这么一种模拟守护进程的方式来实现守护进程,取得不错的效果。守护进程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程最重要的特性是后台运行。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是提供用户使用界面的软件(shell))中继承下来的。最后,守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc. d中启动,可以由作业规划进程(crond)启动,还可以由用户终端(通常是she 11)执行。总之,除这些特殊性以外,守护进程与普通进程基本上没有什么区别。因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。在设置周期性被执行的指令(crontab)计划任务中,写入PHP脚本,定为每分钟都会利用fork函数调度一个进程来执行PHP脚本。假设每个PHP脚本的最大执行时间是10分钟,超过10分钟就停止执行。在10分钟内,保证能有10个进程在执行,并且,一个PHP脚本执行时间到期后,其余PHP脚本还在继续执行,相当于该PHP脚本不间断的执行,也就模拟了守护进程的功能。Linux中的nohup命令的功能就是不挂断的执行命令,同时nohup把程序的所有输出放到当前目录的nohup. out文件中,如果文件不可写,则放到〈用户主目录>/nohup. out文件中。那么有了这个命令以后,PHP程序就可以被改写成shell脚本,使用循环来让脚本一直运行,那么不管终端窗口是否关闭,都能够让PHP脚本一直运行。当然,当PHP进程被杀或者操作系统重启的情况下,PHP脚本自然就会中止了。但是,操作系统重启或守护进程可能导致脚本进程意外中断,此时如果不能即时重启,那么无法为用户提供脚本进程的处理,则网络应用提供的服务就会中断。另外,若守护进程长时间运转,导致脚本进程也长时间工作,若脚本进程的代码存在内存泄漏的情况,长时间运转会导致问题会逐渐放大,直到系统崩溃。

发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的进程控制装置和相应的进程控制方法。
依据本发明的一个方面,提供了一种进程控制装置,包括定时器,配置为定制多个脚本进程的运行时长,其中,多个脚本进程并行处理;计时器,配置为对每个脚本进程的运行时间进行计时;触发器,配置为对于任意一个脚本进程,当计时器的计时时长达到该脚本进程的运行时长时,退出该计时器对应的脚本进程,触发新的脚本进程运行;处理器,配置为计时器的计时时长未达到运行时长时,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后对用户数据再次进行判断。可选地,上述进程控制装置还包括销毁器,配置为销毁退出的脚本进程。可选地,计时器还配置为在操作系统重启或者守护进程意外中断导致脚本进程中断时,针对中断的脚本进程继续进行计时,直至到达运行时长。可选地,上述进程控制装置设置在Cron定时脚本任务中。根据本发明的另一方面,提供了一种进程控制方法,包括对每个脚本进程的运行时间进行计时,其中,多个脚本进程并行处理,且预设每个脚本进程的运行时长;当其中任意一个脚本进程的计时时长达到为该脚本进程设置的运行时长时,退出该脚本进程,并触发新的脚本进程运行;当其中任意一个脚本进程的计时时长未达到运行时长时,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后重新判断。可选的,退出当前脚本进程之后,上述进程控制方法还包括销毁当前脚本进程。可选的,上述进程控制方法还包括在操作系统重启或者守护进程意外中断导致脚本进程中断时,继续对中断的每个脚本进程继续的计时操作;以及当任意一个脚本进程的计时时长达到运行时长时,该脚本进程退出该脚本进程,并触发新的脚本进程运行。可选的,指定时长为I秒。可选的,每个脚本进程的运行时长相同或不同。可选的,当每个脚本进程的运行时长相同时,设置每个脚本进程的运行时长为10分钟。可选的,设置10个脚本同时并行处理。在一个实施例中,设置多个脚本进程并行处理,相对于现有技术的用户放在一个队列中的情况能够大大加快应用处理的速度。特别在网络应用的用户较多时,多个脚本进程的并行处理能够提高处理速度,提高用户的感受体验。在一个实施例中,利用计时器对每个脚本进程进行计时,当计时器的计时时长达到该脚本进程的运行时长时,触发器就会触发新的操作,触发当前脚本进程退出,并触发新的脚本进程运行。由此可见,本发明中的脚本进程是持续更新启动的,保证了有一定数量的脚本进程处于运行状态的,即使操作系统重启或者守护进程意外中断,触发器也会在计时到达的情况下触发新的脚本进程运行,不会造成服务中断。在一个实施例中,由于每个脚本进程的运行时间是设定的,计时器计时到达则触发器触发该脚本进程退出运行状态,由此可见,每个脚本进程的运行时间较短,即使该脚本进程的代码存在内存泄漏的情况,也不会因长时间运转导致问题放大,从而避免了系统崩溃的情况。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式



通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了根据本发明一个实施例的进程控制装置的结构示意图;图2示出了根据本发明一个实施例的PHP模拟守护进程的流程图;图3示出了根据本发明一个实施例的进程控制方法的流程图;图4示出了根据本发明一个实施例的进程控制方法的另一流程图;以及图5示出了根据本发明一个实施例的脚本进程意外中断的处理方法的流程图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本发明一个实施例的进程控制装置的结构示意图。参见图1,该进程控制装置包括定时器110、计时器120以及触发器130。定时器110定制了多个脚本进程的运行时长,其中,多个脚本进程是并行处理的,每个脚本进程的运行时长可以定制为相同的时长,也可以定制为不同的时长。例如,可以设置每个脚本进程的运行时长为10分钟,也可以设置第一个脚本进程的运行时间是10分钟,而第二个脚本进程的运行时间为5分钟,等等。此处的10分钟和5分钟仅仅是一个实例,还可以是20分钟、30分钟等时间,具体的运行时长根据脚本进程的属性进行选择。计时器120,耦接到定时器110,对定时器110定时的每个脚本进程的运行时间进行计时。若采用的计时器的功能较为单一,只能为一个脚本进程进行计时,则为每个脚本进程配置一个计时器。若采用的计时器可以实现多个对象同步计时,则可以根据脚本进程的数量与计时器的计时对象进行配置。例如,一共有10个脚本进程,一个计时器可以同时为5个脚本进程进行计时,则只需要配置2个计时器即可。触发器130,耦接到计时器120。对于任意一个脚本进程,当计时器120的计时时长达到该脚本进程的运行时长时,触发器130触发新的操作,令该计时器120对应的脚本进程退出运行状态,并触发新的脚本进程进行运行。在本发明实施例提供的进程控制装置中,设置多个脚本进程并行处理,相对于现有技术的用户放在一个队列中的情况能够大大加快应用处理的速度。特别在网络应用的用户较多时,多个脚本进程的并行处理能够提高处理速度,提高用户的感受体验。进一步,利用计时器对每个脚本进程进行计时,当计时器的计时时长达到该脚本进程的运行时长时,触发器就会触发新的操作,触发当前脚本进程退出,并触发新的脚本进程运行。由此可见,本发明中的脚本进程是持续更新启动的,保证了有一定数量的PHP脚本处于运行状态的,即使操作系统重启或者守护进程意外中断,触发器也会在计时到达的情况下触发新的脚本进程运行,不会造成服务中断。并且,在本发明中,由于每个脚本进程的运行时间是设定的,计时器计时到达则触发器触发该脚本进程退出运行状态,由此可见,每个脚本进程的运行时间较短,即使该脚本进程的代码存在内存泄漏的情况,也不会因长时间运转导致问题放大,从而避免了系统崩溃的情况。其中,各脚本进程的语言可以是能够实现其相应功能的任意语言,例如,较为常见的PHP、C、C++、Iinux等语言均可。目前使用较多的是PHP脚本,当然,使用C语言效率会更高。假设每个PHP脚本的运行时间为10分钟,在本发明中,超过10分钟后,PHP脚本自动终止运行,也就不存在内存泄漏的风险。而另外如果操作系统重启或守护进程意外中断,触发器也会继续触发PHP脚本,保证有一定的PHP脚本(例如10个)处于运行状态,消息系统的稳定性就能够得到保证。为了防止内存泄漏以及合理回收,参见图1,本发明实施例提供的进程控制装置还包括销毁器140,销毁退出的脚本进程。在出现操作系统重启或者守护进程意外中断导致脚本进程中断的意外情况时,为保证系统的稳定性,每个计时器120会针对中断的脚本进程继续进行计时,直至到达运行时长。当计时器120达到运行时长时,其必然会触发与该计时器120耦合的触发器130,触发新的脚本进程运行,为用户提供服务,避免出现服务中断的情况。参见图1,本发明实施例提供的进程控制装置还包括处理器150,耦接到计时器120。处理器150能够在脚本进程的执行过程中确认对用户数据进行处理。上文提及,用户数据会放在用户队列中,按顺序进行处理。因此,当计时器120的计时时长未达到运行时长时,处理器150会判断当前用户队列中是否存在用户数据。当用户队列中存在用户数据时,处理器150直接对用户数据进行处理。当用户队列中不存在用户数据时,处理器待指定时长后对用户数据再次进行判断。此处的指定时长可以是设置的任意时长,但不能超出脚本进程的运行时长。若该脚本进程已运行一段时间,则在计时器的基础上,加上指定时长,也不能超出脚本进程的运行时长。若超出,则该脚本进程就退出运行状态,不再处理数据,无须再进行用户数据的判断。可选的,本发明实施例提供的进程控制装置设置在Cron定时脚本任务中,利用Cron脚本任务实现对脚本进程(例如PHP脚本)的调度和应用。目前,360开放平台的消息系统,为千万级的用户提供消息服务。由于用户数巨大,为了让全部用户能在短时间内收到消息,必须采用多个进程来处理消息下发。消息下发模块使用的PHP脚本,当然如果用C语言来实现,效率会更高。单个PHP脚本所能处理的用户数为5万/秒,利用Cron计划任务定时启动多个PHP脚本并行处理,将大大提高消息下发速度,同时也保证了消息服务的稳定性。另外,若设置每个PHP脚本最大运行时间为10分钟,意味着10分钟后,该脚本将终止,当前进程退出,从而保证了内存不泄漏。图2示出了根据本发明的一个实施例的PHP模拟守护进程的流程图。参见图2,该流程起始于在Cron计划任务中里配置定时任务。定时任务配置结束后,系统每分钟执行一个PHP脚本。当每个PHP脚本执行时长超过10分钟,自动销毁该进程,PHP脚本终止。而在脚本进程执行过程中,会判断用户队列中是否有用户数据,没有则等待(sleep) I秒再执行判断PHP脚本,如此循环执行下去,直至超时退出。图3示出根据本发明的一个实施例的进程控制方法的流程图。参见图3,该流程起始于步骤S302。在步骤S302中,对每个脚本进程的运行时间进行计时。其中,步骤S302中提及的多个脚本进程并行处理,提高脚本进程处理的速度。其中,预设每个脚本进程的运行时长均是预设好的,例如预设为10分钟。每个脚本进程的运行时长可以相同,也可以不同。当每个脚本进程的运行时长相同时,例如可以设置每个脚本进程的运行时长均为10分钟。当每个脚本进程的运行时长不同时,则例如可以设置第一个脚本进程的运行时长为10分钟,而第二个脚本进程的运行时长为20分钟,等等。可选的,可以设置10个脚本进程同时并行处理。当然,此处的10个脚本仅仅是一个优选的实施例,在实施过程中,可以根据具体情况确定脚本的数量,该数量通常取决于客户端的资源剩余量以及每条脚本进程所占用的资源多少。例如,若 客户端的资源大多空闲,则可以执行几十甚至上百个脚本进程,但是,若客户端的资源较为紧张,则可能只能执行几个脚本进程。当步骤S302中的其中任意一个脚本进程的计时时长达到为该脚本进程设置的运行时长时,启动步骤S304,S卩,退出该脚本进程,并触发新的脚本进程运行。在本例中,为了使得计时效果精确,并能够及时的触发脚本进程的退出流程,考虑使用计时器对各脚本进程进行计时。对任意一个脚本进程而言,当计时器计时结束(即达到该脚本进程的计时时长),可以通知客户端的控制模块或管理模块,令其结束该脚本进程,或者,也可以由该计时器触发该脚本进程自动退出。图4示出了根据本发明的一个实施例的进程控制的另外一种流程图。参见图4,步骤S304在实施时,当退出当前脚本进程之后,还可以执行步骤S306,销毁当前已退出的脚本进程。在本例中,采用销毁当前脚本进程的操作,能够释放本运行的脚本进程占用的资源,进而提高系统资源的利用率,同时避免了因长期运行可能导致的内存泄漏的问题。实施时,可能会脚本进程中断的意外情况,例如,可能会因操作系统重启导致脚本进程中断,再例如,还可能会因守护进程意外中断导致脚本进程中断时,再例如,还可能因新的脚本进程或守护进程需要占用大量资源从而导致脚本进程被迫中断的。相应的,本例中提供了对于脚本进程意外中断的情况的处理方式。图5示出了根据本发明的一个实施例的脚本进程意外中断的处理方式,包括步骤S502至步骤S504。步骤S502、当脚本进程意外中断时,继续对中断的每个脚本进程继续的计时操作。步骤S504、当任意一个脚本进程的计时时长达到运行时长时,该脚本进程退出该脚本进程,并触发新的脚本进程运行。值得说明的是,步骤S504中的脚本进程退出运行后,若出于提高系统资源利用率的目的,该脚本进程也应该被销毁,将其占用的资源释放出来,以便于新的脚本进程使用。参照图5所示的方法,虽然因操作系统重启或守护进程意外中断导致脚本进程中断,但是,计时操作仍在进行。在计时时长达到一定的阈值时,会触发新的脚本进程运行,为用户提供服务,不会因意外情况导致服务中断,提高了用户的感受体验。脚本进程被创建之后,若没有被中断或销毁,则该脚本进程处于执行过程或者称为运行状态。在本例中,对任意一个脚本进程而言,当该脚本进程的计时时长未达到运行时长时,即该脚本进程处于运行状态,则对该脚本进程的处理对象进行判断,判断其是否是处于工作状态还是闲置。具体的,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后重新判断。可选的,指定时长可以设置为I秒。综上,本发明实施例达到如下有益效果在一个实施例中,设置多个脚本进程并行处理,相对于现有技术的用户放在一个队列中的情况能够大大加快应用处理的速度。特别在网络应用的用户较多时,多个脚本进程的并行处理能够提高处理速度,提高用户的感受体验。在一个实施例中,利用计时器对每个脚本进程进行计时,当计时器的计时时长达到该脚本进程的运行时长时,触发器就会触发新的操作,触发当前脚本进程退出,并触发新的脚本进程运行。由此可见,本发明中的脚本进程是持续更新启动的,保证了有一定数量的脚本进程处于运行状态的,即使操作系统重启或者守护进程意外中断,触发器也会在计时到达的情况下触发新的脚本进程运行,不会造成服务中断。在一个实施例中,由于每个脚本进程的运行时间是设定的,计时器计时到达则触发器触发该脚本进程退出运行状态,由此可见,每个脚本进程的运行时间较短,即使该脚本进程的代码存在内存泄漏的情况,也不会因长时间运转导致问题放大,从而避免了系统崩溃的情况。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式
的权利要求书由此明确地并入该具体实施方式
,其中每个权利要求本身都作为本发明的单独实施例。 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP )来实现根据本发明实施例的进程控制装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
权利要求
1.一种进程控制装置,包括定时器,配置为定制多个脚本进程的运行时长,其中,所述多个脚本进程并行处理;计时器,配置为对每个脚本进程的运行时间进行计时;触发器,配置为对于任意一个脚本进程,当所述计时器的计时时长达到该脚本进程的运行时长时,退出该计时器对应的脚本进程,触发新的脚本进程运行;处理器,配置为所述计时器的计时时长未达到所述运行时长时,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后对用户数据再次进行判断。
2.根据权利要求1所述的装置,其特征在于,还包括销毁器,配置为销毁退出的脚本进程。
3.根据权利要求1或2所述的装置,其特征在于,所述计时器还配置为在操作系统重启或者守护进程意外中断导致脚本进程中断时,针对中断的脚本进程继续进行计时,直至到达所述运行时长。
4.根据权利要求1至3任一项所述的装置,其特征在于,所述装置设置在Cron定时脚本任务中。
5.一种进程控制方法,包括对每个脚本进程的运行时间进行计时,其中,多个脚本进程并行处理,且预设每个脚本进程的运行时长;当其中任意一个脚本进程的计时时长达到为该脚本进程设置的运行时长时,退出该脚本进程,并触发新的脚本进程运行;当其中任意一个脚本进程的计时时长未达到所述运行时长时,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后重新判断。
6.根据权利要求5所述的方法,其特征在于,所述退出当前脚本进程之后,还包括销毁所述当前脚本进程。
7.根据权利要求5或6所述的方法,其特征在于,还包括在操作系统重启或者守护进程意外中断导致脚本进程中断时,继续对中断的所述每个脚本进程继续的计时操作;以及当任意一个脚本进程的计时时长达到所述运行时长时,该脚本进程退出该脚本进程, 并触发新的脚本进程运行。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述指定时长为I秒。
9.根据权利要求5至8任一项所述的方法,其特征在于,所述每个脚本进程的运行时长相同或不同。
10.根据权利要求9所述的方法,其特征在于,当所述每个脚本进程的运行时长相同时,设置所述每个脚本进程的运行时长为10分钟。
11.根据权利要求5至10任一项所述的方法,其特征在于,设置10个脚本同时并行处理。
全文摘要
本发明公开了一种进程控制装置和方法,其中所述方法包括对每个脚本进程的运行时间进行计时,其中,多个脚本进程并行处理,且预设每个脚本进程的运行时长;当其中任意一个脚本进程的计时时长达到为该脚本进程设置的运行时长时,退出该脚本进程,并触发新的脚本进程运行;当其中任意一个脚本进程的计时时长未达到所述运行时长时,判断当前用户队列中是否存在用户数据,若是,则对用户数据进行处理,若否,则待指定时长后重新判断。采用本发明能够解决因操作系统或守护进程中断导致的网络应用服务中断的技术问题。
文档编号G06F9/48GK102999388SQ201210447958
公开日2013年3月27日 申请日期2012年11月9日 优先权日2012年11月9日
发明者王博, 吴凯 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1