gpt4 book ai didi

PHP- 需要一个 cron 用于用户注册时的后台处理...(或 fork 进程)

转载 作者:可可西里 更新时间:2023-11-01 00:38:47 26 4
gpt4 key购买 nike

每当新用户在我的网站上注册时,我都想做一些预处理以缩短他们将来的搜索。这涉及 30 到 2 分钟的处理时间。显然,当他们在注册时或在他们访问的任何 PHP 页面上单击提交按钮时,我不能这样做。但是,我希望在他们注册后的 5 分钟内(或更短时间内)完成此操作。

Cron 路线我认为这需要在 cron 作业中,如果是这样,我应该如何设置 cron 作业?如果是这样,我的 cron 行每 2 分钟运行一次应该是什么样的,我如何确保我没有相同的 cron 作业与下一个重叠?

事件/分支路线 - 首选如果我可以在不中断用户体验的情况下向我的服务器抛出一些事件,或者从用户注册中 fork 出一个过程(而不是 cron 作业),我该怎么做?

最佳答案

我不推荐这两种解决方案。

相反,您最好使用从 message queue 获取作业的长时间运行的进程(守护进程)。 .如果这是您的首选方法,则消息队列本身可以脱离数据库。

您会将作业的标识符发布到您的数据库中,然后一个长时间运行的进程将不时地迭代它们并根据它们采取行动。

这很简单:

<?php
while(true) {
jobs = getListOfJobsFromDatabase(); // get the jobs from the databbase
foreach (jobs as job) {
processAJob(job); // do whatever needs to be done for the job
deleteJobFromDatabase(job); //remember to delete the job once its done!
}
sleep(60); // sleep for a while so it doesnt thrash your database when theres nothing to do
}
?>

只需从命令行运行该脚本即可。

与 cron 作业相比,它的好处是您不会出现竞争条件。

您可能还想 fork 作业的实际处理,以便可以并行完成许多作业,而不是按顺序处理。

关于PHP- 需要一个 cron 用于用户注册时的后台处理...(或 fork 进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984577/

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