php返回数据后如何让程序继续执行其它操作

news/2024/12/27 3:57:57/文章来源:https://www.cnblogs.com/caroline2016/p/18247497

最近遇到一个需求,异步请求对一个慢查询的结果进行缓存,先返回缓存的结果,然后继续获取数据缓存下来。写个demo记录下

使用register_shutdown_function函数

register_shutdown_function — 注册在关闭时执行的函数

register_shutdown_function(callable $callbackmixed ...$args): void

注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。

<?phpclass Test
{public function test1($a, $b){sleep(4);echo 'test-1<br/>';file_put_contents('E:/code/files/test.txt', json_encode(compact('a', 'b')) . 'aaaaaa');}function test(){echo 'test<br/>';register_shutdown_function([$this, 'test1'], 2, 3);echo 'test end<br/>';return 2;}
}$t = new Test();
$res = $t->test();
var_dump($res);

 期望数据立即返回,而程序继续执行,然而实际上数据等全部程序执行完才返回

使用ob系列函数

<?phpclass Test
{public function test1($a, $b){sleep(4);echo 'test-1<br/>';file_put_contents('E:/code/files/test.txt', json_encode(compact('a', 'b')) . 'aaaaaa');}function test(){echo 'test<br/>';ob_end_clean();header("Connection: close");header("HTTP/1.1 200 OK");header("Content-Type: application/json;charset=utf-8");ob_start();echo json_encode(['a' => 1]);$size = ob_get_length();header("Content-Length: $size");ob_end_flush();flush();if (function_exists("fastcgi_finish_request")) {fastcgi_finish_request();}sleep(2);set_time_limit(0);$this->test1(2, 3);// register_shutdown_function([$this, 'test1'], 2, 3);echo 'test end<br/>';return 2;}
}$t = new Test();
$res = $t->test();
var_dump($res);

此时数据即刻返回,而程序仍然执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/724704.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Instruction Tuning

目录概LLaVA代码Liu H., Li C., Wu Q. and Lee Y. J. Visual Instruction Tuning. NeurIPS, 2023.概 LLaVA. LLaVALLaVA 希望用 LLM 推理模态特征, 想法很简单:用 Vision Encoder 得到模态特征:\[\mathbf{Z}_v = g(\mathbf{X}_v). \] 用 Linear 投影:\[\mathbf{H}_v = \mathbf{…

如何从阿里云ECS迁移到AWS EC2?

随着云计算技术的迅速发展,众多跨国企业正在考虑将其工作负载迁移到AWS EC2,以获得更多的功能、灵活性和性能。在这个过程中,如何顺利迁移业务主机,并且保障迁移过程中业务的正常稳定访问,成为了一个具有挑战性的问题。九河云凭借丰富的多云迁移经验,借助AWS Application…

编程题目解析

编程题目解析 假设数据项定义如下: DATA1 DBHELLO!GOOD MORNING! DATA2 DB20DUP(?) 用串操作指令编写程序段,使其分别完成以下功能: (1)从左到右将DATA1中的字符串传送到DATA2中。 (2)传送完毕后,比较DATA1和DATA2中的内容是否相同:(3)把DATA1中的第3和第4字节装人AX。 (4)将A…

ASCII字符表和说明

ASCII,全称 American Standard Code for Information Interchange,即美国信息互换标准代码ASCII,全称 American Standard Code for Information Interchange,即美国信息互换标准代码,特点如下:一个字符用一个字节存储。 每个字节的最高位为 0,剩下的 7 位二进制数来对每…

构建vivo小游戏时出现npm install -g的解决方案

我通过Unity开发了一款游戏,我们使用Vivo官方的插件构建了webgl项目我们需要在vscode中使用node.js和npm进行打包成rpk文件,所以我们需要安装node和npm(现在下载node.js基本上都有集成了npm) PS:需要先下载Vivo的官方minigame插件,下载后可以使用npm run build调用该插件…

sort命令对文件内容排序

如下,有一个ip文件,需要对其进行排序处理,方便直观查看 解决办法:sort -n -t . -k1,1 -k2,2 -k3,3 -k4,4 ip.txt-n #表示按数值排序 -t . #表示以 . 号为分隔符,进行分段处理 -k1,1 -k2,2 -k3,3 -k4,4 #表示对ip地址以.号结尾进行4部分排序 ip.txt …

如何创建一个自己的npm包

一、注册npm账号 前往npm官网注册自己的npm账号(有了的可以省略这步) 注册注意事项(账号要拼音全小写的,密码需要十位以上,包含大小写字母、数字、特殊字符,有错误的话点击创建的时候最后他才会统一在页面的最上方显示错误) 二、本地建立一个文件 本地建立一个自己的npm包…

全光万兆时代来临:信而泰如何助力F5G-A(50PONFTTR)技术发展

技术背景 F5G-A(Fifth Generation Fixed Network-Advanced,第五代固定网络接入)是固定网络技术的一次重大升级,代表了光纤网络技术的最新发展。F5G-A旨在提供更高的带宽、更低的延迟、更可靠的连接以及更广泛的应用场景。 F5G-A六大特征:新技术的发展也带来了更多的测试挑…

Bean Searcher v4.3.0 重大更新!

Bean Searcher 是一款专注高级查询的只读 ORM 开源项目。本次更新带来了大家期待已久的功能 ...往期阅读:我这样写代码,比直接使用 MyBatis 效率提高了 100 倍 最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别? Bean Searcher v3.8.0 一大波新特性来袭Bean Searcher…

探索2024年的软件开发

2024年6月了,目前的软件开发已经到了什么阶段了? 哪个阶段是开发的重难点?CI/CD吗?容器化/容器编排?GPU、TPU调度?提前小结: 1、CI/CD 是 现代化软件开发的核心。 公司有,独立开发者也应该有一套,可以大大提高开发效率。 2、代码生成LLM大模型 需要积极探索。 作者只用…

vscode process terminal 3221225506 终端打不开 默认打开powershell

可能旧的 版本,旧的文章不适用 可能内网环境,识别不了终端 现在的解决方式是,打开setting,搜索“”“powershell” ,定位到 ,修改default profile 选项为 Command Prompt附 网上的旧方法不适用 ,如 2021年的文章 https://blog.csdn.net/qq_40021015/article/details/113…

使用‘消除’技术绕过LLM的安全机制,不用训练就可以创建自己的nsfw模型

开源的大模型在理解和遵循指令方面都表现十分出色。但是这些模型都有审查的机制,在获得被认为是有害的输入的时候会拒绝执行指令,例如会返回“As an AI assistant, I cannot help you.”。这个安全功能对于防止误用至关重要,但它限制了模型的灵活性和响应能力。 在本文中,我…