实现一个后台处理系统来更新/管理应用程序更新/备份


Implementing a background processing system to update/manage application updates/backup

我目前正在一个相当大的纯动态网站,其中包含需要过期的各种信息。以前我不必担心过期,因为它是在用户登录时处理的(如果需要,将运行各种检查以使登录的用户数据过期),但是随着我们的成员基数增加和用户不活跃,数据库中的数据正在变老。通常情况下,这不会是一个问题,但旧数据会影响网站的其他功能/功能(基于点的系统功能实现,团队建设功能等)所有数据存储在数据库中有一个过期定时器,所以我所要做的就是使用php脚本软删除数据,但我不想触发这个页面加载(我想避免减慢用户页面加载)

除了cronjobs之外还有哪些可用的替代方案。我希望能够通过php设置和管理后台服务,这样我就不必每次需要添加新内容时都要编辑/创建crons等。

理想情况下,我正在寻找或试图实现一个系统,将允许我插入一个db行与特定的指令(队列特定的更新),它将在后端处理。我希望/需要尽快更新数据,以避免我们现在遇到的问题。这个后台处理器最终将处理更大更复杂的任务,比如自动安排现场活动(比赛),或者自动为这些比赛生成括号。感谢所有的帮助!

您可以尝试MySQL事件调度程序,这样您就可以启动一个SQL脚本,每x天重新运行一次:

CREATE EVENT `delete_old_data` 
ON SCHEDULE schedule
ON COMPLETION NOT PRESERVE
ENABLE
DO BEGIN
    -- event body, something like delete all rows older than 5 days
END;

老实说,做更复杂的事件,如生成'站点事件',看起来你应该使用cronjob。你有什么理由不能用这个吗?我相信,如果您向您的主机提供商解释您需要cronjob,并向他们展示您将使用它的代码,他们将在您的帐户上启用此选项。(大多数主机应该已经启用了)

有几种方法,但没有一种是完美的。

计划

你已经指出你不想使用它们。但是,如果您主要关心的是crontab管理,那么您可能只需要设置一个每分钟运行一次的PHP cron,它可能会触发具有不同分辨率的不同任务。这样就可以通过PHP完全管理后台服务。主要的缺点是你不能并行地执行后台任务。

<<p> GEARMAN工人/strong>

您也可以使用第三方软件,如Gearman。Gearman允许您用任何喜欢的语言(支持PHP,以及c++、java和许多其他语言)编写所谓的worker(后台服务)。这些worker的行为类似于异步函数,可以使用gearman api从代码的任何地方调用。您不必携带结果,只需调用函数并忘记即可。它将在后台完成。此外,任务调度是一个内置的gearman功能。

您可以使用的另一个软件是Rabbit MQ或任何其他消息总线系统。

原生PHP ASYNC函数

新的PHP7将带来本地php异步编程。您将能够分离PHP脚本和http请求处理,有点像node.js。您的脚本将能够一直工作,以任何您喜欢的方式做一些后台工作,并在另一个进程中处理http请求(如事件)。这可能是你最好的选择,如果你可以等到发布日期。

我的回答只涵盖我个人使用的解决方案。也许还有其他方法可以达到你的目标,所以继续寻找吧!