关于ob函数的使用和应用场景

本文深入讲解了OB缓冲区的工作原理及应用,包括如何在PHP中配置和使用OB缓冲区,以及其在静态页面生成和服务器实时回传场景中的具体实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ob缓冲区:

通过浏览器向Apache或者nginx发送请求,然后去调用PHP,在返回给浏览器信息的时候如果ob开启,就会将信息输出到ob里,例如(输出(echo、print_r、var_dump.......等)),然后在经过程序缓冲最终返回给浏览器,显示到页面上。如下图:

在使用ob函数之前我们需要修改一下php.ini的配置文件,切记修改完配置文件要重启Apache或nginx。

php.ini(如何迅速精准的找到环境对应的PHP配置文件,在Demo里输出phpinfo)

output_buffering = 4096    代表PHP缓冲区大小    4096字节   4k
在代码测试时,需要关闭缓冲区,然后在做测试

output_buffering =0或者false 
下面我们来举个栗子,写一个小Demo

<?php
//默认缓冲区是关闭状态    缓冲区可以看作一个容器
 
ob_start();     //开启缓冲区
 
echo '123,';     //输出到php缓冲区     缓冲区的内容是123,
 
$data = ob_get_contents();      //从缓冲区获取内容
 
echo $data;     //输出到php缓冲区     缓冲区的内容是123,123,
 
$data = ob_get_contents();      //从缓冲区获取内容      123,123,
 
echo $data;     //输出到php缓冲区     缓冲区的内容是123,123,123,123,
ob函数应用场景:

1、静态页面的生成

2、需要服务器实时回传给浏览器特定状态使用

来一个小Demo看看效果吧

<?php
header("Content-Encoding: none\r\n");   //告诉服务器不使用gzip压缩
 
ob_start();     //开启缓冲区
 
for ($i=1;$i<=10;$i++){
    sleep(1);   //程序暂停....秒
    echo str_repeat("    ", 1024*65);
    echo $i."%";
    //将缓冲区中的内容刷出(ob缓冲区  程序缓冲)
    ob_flush(); //将ob缓冲区中的数据刷出
    flush();    //将程序缓冲刷出到浏览器端
}
这是运行结果:

对于ob缓冲,我使用的地方主要是用于优化页面的时候使用的,当时我做的项目中有一个文章内容的展示页面,由于这个页面对他的变动比较少,在优化时决定将页面实现静态化, 用来减轻服务器对数据库的压力,我们都知道,多次请求数据库的时候对数据库的性能造成的压力很大,我的做法是使用ob缓冲将数据库的信息缓存起来,在这里,我加入了文件时间的判断,用来定期更新缓冲的内容,这样做,也达到了我们想要的一个效果。

我记得常用的命令有下面几个;
ob_start() 开启
ob_get_contents()  获取缓存中的数据
ob_clean()  清空缓存中的数据
ob_end() 关闭ob缓存
ob_end_clean() 清空缓存并关闭ob缓存


 

Halcon是德国MVTec公司开发的一款商业机器视觉软件,它提供了丰富的机器视觉算法工具。`sort_ob` 函数在Halcon中用于对检测到的对象进行排序,根据给定的特征,例如大小、面积、位置等。使用函数时,用户需要根据具体的应用场景选择合适的排序依据。 以下是使用 `sort_ob` 函数的基本步骤: 1. 首先,你需要使用Halcon的图像处理对象检测功能来找到你想要排序的对象。这通常涉及到图像预处理、特征提取等步骤。 2. 接着,使用 `sort_ob` 函数来对检测到的对象进行排序。你需要传入对象集合以及一个排序规则。排序规则可以是对象的某些特征,如面积、中心点位置等。 3. 函数执行后,它会返回一个有序的对象集合,可以根据这个有序集合进行后续操作。 下面是一个简化的例子,展示如何使用 `sort_ob` 函数: ```halcon * 假设已经检测到对象并存储在对象数组Objects中 * 使用sort_ob函数根据对象的面积进行升序排序 gen_cross_contour_xld(Cross, 3, 0, 0, 'positive', 0.785398) sort_ob(Objects, SortedObjects, 'area', 'ascending', Cross, Indices) * SortedObjects现在包含了按面积从小到大排序的对象 * Indices是一个数组,包含了排序后的对象在原数组中的索引位置 ``` 注意,在使用 `sort_ob` 函数之前,你必须确保已经正确地检测并定义了对象特征,以及选择了合适的排序参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值