gpt4 book ai didi

php - 如何运行 longlife 后台进程,linux 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:37 26 4
gpt4 key购买 nike

我正在运行一个需要处理一些“繁重”任务(从 30 秒到 3 分钟)的网络应用程序 (php)。我知道它不是很重,但我不能让我的用户等待它们,所以我设置了一个内部 API,例如:http://localhost/process-picture/745884/ 并且我将此操作存储在 MySQL 表中。

现在我想创建一个“进程”来获取那个 MySQL 表并执行最旧的排队操作,一旦完成,它就得到下一个,依此类推。

首先,我考虑制作一个 PHP 脚本,通过 cURL 调用系统:

fetchOperation.php 连接到数据库并获取操作的 URL 以通过 cURL 调用它。每个操作:执行自身,然后从队列中删除自身并再次调用 (cURL) fetchOperation.php

我觉得这个系统有点棘手,所以我想知道是否有任何方法(以及用哪种语言编写它)设置一个后台进程,每 15 秒检查一次数据库,并执行以下操作:

  • 删除标记为DONE 的所有行。
  • 检查是否有标记为PROCESSING 的行,如果是,则退出并等待下一个 15 秒。
  • 如果没有 PROCESSING 行,则触发最旧的 PENDING 行(FIFO 队列)。

这样我可以随时管理正在处理的内容,甚至可以控制服务器负载(例如,在晚上允许最多有三个 PROCESSING 项目)。

抱歉这么长的解释,在此先感谢您!

最佳答案

听起来您需要使用 cron 安排工作. cron 将只运行一个脚本/程序,因此它的实现将与调度本身不同。

Cron 只会触发/忘记,因此您可以从中调用任何持续时间的进程(我在下面查看您的执行时间评论 - 如果我误解了请修改)

关于php - 如何运行 longlife 后台进程,linux 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com