PHP有没有一种方法,使函数多次调用在执行结束之前再一次性处理?
例如我定义一个函数,在页面中可能会多次调用这个函数,调用的位置不定、调用次数不定;
而这个函数可能会有读取数据库或其他比较耗资源的操作
有没有方法让每次调用这个函数的时候不用即时返回结果和执行,而在在整个程序快要执行结束之前统一给所有的调用一次性统一处理?
以代码举例,大概意思就是
<%
function get_info($param){
//这里可能是一些比较复杂操作,比如读取数据库等
//且期望这个函数只执行一次,并分别给调用的地方返回值
echo '-只调用了1次';
return $param;
}
echo get_info(1);//不即时处理
echo 'A';
echo get_info(2);//不即时处理
echo get_info(3);//不即时处理
//把所有调用get_info在这里一次性全部处理并分别返回
//程序结束
%>
最终期望输出结果:
1A23-只调用了1次
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
个人建议,使用队列做计划任务,也就是说,每次调用函数的时候入一次队列, 然后整个程序快要执行结束的时候,触发这个任务,开始出队列调用.
使用静态变量
如果是重复查询的话,第一次调用的时候把结果放到静态变量里,下次调用静态变量。
1、利用 PHP 数组作为简单的队列,把要操作的方法名和参数放到数组,在程序尾调用。
2、使用一些第三方库实现的类似于 JS 的异步解决方案 spatie/async
3、使用队列咯