四时宝库

程序员的知识宝库

分享一个应急响应的经验和思路(分享一个应急响应的经验和思路和建议)

PHP输出缓冲区详细教程(php写缓存)

一、概念

在PHP运行的过程中,可以将会产生输出的函数或操作结果暂时保存在PHP的缓冲区,只有当缓冲区满了、或者PHP运行完毕、或者在必要时候进行输出,才会将数据输出到浏览器,此缓冲数据的区域称为PHP的输出缓冲区(OB)。

二、原理

①使用了缓冲区之后,当执行PHP的时候,如果碰到了echo、print_r之类的会输出数据的代码(实际上许多函数都会产生输出),PHP就会将要输出的数据放到PHP自身的缓冲区,等待输出;

基于Think-Swoole 导出文件(swoole thinkphp)

hello,大家好呀,我是yangyang,今天给php的朋友分享下关于在自己的tp项目中使用了think-swoole来全面协程化后遇到的关于导出文件输出流的一点小问题

导出文件

导出报表是非常常见的需求,实现的技术方式有很多,小编不才,先给大家分享一下php我遇到的几种业务场景

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

概述

今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。


1、修改邮件配置

进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。

<?php

$get_mail_content = get_include_contents('get_top100_slowsql.php');

function get_include_contents($filename) {
 if (is_file($filename)) {
 ob_start();
 include $filename;
 $contents = ob_get_contents();
 ob_end_clean();
 return $contents;
 }
 return false;
}

 $smtpserver = "xx.xxcom";//SMTP服务器
 $smtpserverport = 587;//SMTP服务器端口
 $smtpusermail = "xx.xx.xx";//SMTP服务器的用户邮箱
 $smtpemailto = 'huangwbxx';//发送给谁
 $smtpuser = "xunjian";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
 $smtppass = "xxxxx";//SMTP服务器的授权码
 $mailtitle='【告警】慢查询报警推送TOP100条,请及时优化.';
 $mailcontent='下面的慢查询语句或许会影响到数据库的稳定性和健康性,请您在收到此邮件后及时优化语句或代码。数据库的稳定性需要大家的共同努力,感谢您的配合!<br><br>' .$get_mail_content .'<br><
br>该邮件由slowquery系统自动发出,请勿回复,语句详细执行情况请登录<a href="http://1xx.xx.xx.xx/slowquery/slowquery.php">slowquery系统查看.<br><br>';
system("./sendEmail -f $smtpusermail -t $smtpemailto -s $smtpserver:$smtpserverport -u '$mailtitle' -o message-charset=utf8 -o message-content-type=html -m '$mailcontent' -xu $smtpusermail 
-xp '$smtppass'");
?>

织梦网站UTF8版本的搬家换服务器之后验证码不显示的解决方法

今天客户搬家新服务器之后发现织梦后台验证码不显示

就是这个毛病。经过检查发现他用记事本打开导致。尤其utf8尽量用Dreamweaver notepad++等编辑器编辑配置文件。否则容易bom丢失。

我们用一下方法解决成功

打开include文件夹下vdimgck.php文件(一般是倒数第三个)加入ob_clean() 清除图片生成缓存

PHP常用函数,记录下(php常用语句)

PHP常用函数,记录下

/**

* UTF-8编码 GBK编码相互转换/(支持数组)

*

* @param array $str 字符串,支持数组传递

* @param string $in_charset 原字符串编码

* @param string $out_charset 输出的字符串编码

* @return array

*/

function array_iconv($str, $in_charset="gbk", $out_charset="utf-8"){

php配合前端实现图片裁剪(php前端用什么框架)

使用php对图片进行放大缩进并裁剪

/*
图片地址
$obj->url 
图片的宽,比如放大或缩小后的图片,如果图片宽本来是100,你把他放大到200,那这里就填200
$obj->largeWidth 
图片的高,同上
$obj->largeHeight 
新图的宽,比如你把图片从100放大到200,且只要其中的150,那这里就填150
$obj->newWidth 
新图的高,同上
$obj->newHeight 
新图相对于原图的的水平偏移,注意,这里的原图是指放大或缩小之后的图片,
就拿上面的讲,你的图片是100*200,当是你放大到 200*400, 现在你只要 150*150,
而且你要最中心的位置,即在 200*400 的大小中 在最中间的位置 裁剪 150*150 
这时候 $obj->x 就应该是 (200-150)/2 = 25 , $obj->y 就应该是 (400-150)/2 = 125
$obj->x 
$obj->x
*/
<?php
function clipping($obj){ //输出裁剪图片
 
 $info=getimagesize($obj->url);
 
 $w=$info[0];
 $h=$info[1];
 
 switch($info[2]){
 case 1:
 $largeImage=imagecreatefromgif($obj->url);
 break;
 case 2:
 $largeImage=imagecreatefromjpeg($obj->url);
 break;
 case 3:
 $largeImage=imagecreatefrompng($obj->url);
 break;
 }
 
 //创建一张临时图片,图片的width和height是放大或缩小之后的
 $tempImage=imagecreatetruecolor($obj->largeWidth,$obj->largeHeight);
 
 //把即将要裁剪的图片放进这张临时图片
 imagecopyresampled($tempImage,$largeImage,0,0,0,0,$obj->largeWidth,$obj->largeHeight,$w,$h);
 
 //销毁原图,因为现在已经有一张临时图片了
 imagedestroy($largeImage);
 
 //创建一张新图,这张新图就是就要裁剪的大小
 $newImage = imagecreatetruecolor($obj->newWidth,$obj->newHeight);
 // 把临时图片放进裁剪图片,参数已在上面说明了
 imagecopyresampled($newImage,$tempImage,0,0,$obj->x,$obj->y,$obj->newWidth,$obj->newHeight,$obj->newWidth,$obj->newHeight);
 
 //销毁临时图片
 imagedestroy($tempImage);
 
 //直接在浏览器输出图片,输出前先执行 ob_clean();不然可能出现输出失败
 ob_clean();
 switch($info[2]){
 case 1:
 header('Content-Type:image/gif');
 imagegif($newImage); 
 break;
 case 2:
 header('Content-Type:image/jpeg');
 imagejpeg($newImage);
 break;
 case 3:
 header('Content-Type:image/png');
 imagepng($newImage);
 break;
 }
 //在浏览器输出之后就可以销毁了
 imagedestroy($newImage);
 }
?>

PHP中的输出缓冲控制(php输出缓冲区)

在 PHP 中,我们直接进行 echo 、 或者 print_r 的时候,输出的内容就会直接打印出来。但是,在某些情况下,我们并不想直接打印,这个时候就可以使用输出缓冲控制来进行输出打印的控制。当然,这一套功能并不仅限出针对打印的内容,我们还可以做其它一些操作,这个我们放到最后再说。

清除输出

首先,我们先来看看不让 echo 之类的内容打印输出。

你应该这个姿势学习php(3)(php和php3)

1、ob_start()

开启文件缓存

2、ob_get_contents()

得到缓存中的内存

3、ob_get_length()

得到缓冲区的长度

4、ob_flush()

输出缓冲区的内容,如果你想获取缓冲区的内容要在这个函数之前使用ob_get_contents(),不然数据将会被清空

5、ob_end_flush()

输出缓冲区并关闭缓存

6、ob_end_clean()

php怎么清除缓冲区?(php清空数据表)

php清除缓冲区的方法
方法1:ob_end_clean
ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲
语法:
ob_end_clean ( void ) : bool
此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。如果想要进一步处理缓冲区的内容,必须在ob_end_clean()之前调用ob_get_contents(),因为当调用ob_end_clean()时缓冲区内容将被丢弃。
返回值
成功时返回 TRUE, 或者在失败时返回 FALSE。 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言)。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接