for ($i=10; $i>0; $i--)
{ echo $i;
flush();
sleep(1); }
?>
According to the php manual
This function sends all the output of the program so far to the user's browser.
The above code should output $i every second. But this is not necessarily the case in practice. It is possible that after waiting for 10 seconds, all output is presented at the same time.
Okay, let’s change this code to
echo str_pad(" ", 256);
for ($i=10; $i>0; $i--)
{ echo $i;
flush();
sleep(1);
} ?>Hey, after adding this sentence ob_end_clean();, it is OK. In fact, it is also OK if we replace ob_end_clean() with ob_end_flush().
Note: IE needs to receive 256 bytes before starting to display.
Therefore, we need to add before: echo str_pad(" ", 256);
I'll change it again.
echo str_pad(" ", 256);
for ($i=10; $i>0; $i--)
{ echo $i;
ob_flush();//Modify part
flush();
sleep(1); } ?>Run it, do you find that $i is also output every second? Why is this?
Don't worry, let's take a look at php.ini.
Open php.ini, search for output_buffering, we will see a setting like this output_buffering = 4096. Just like its name output_buffering, the function of this setting is to buffer the output. The buffer size is 4096bytes.
In our first piece of code, the reason why the output is not as expected is precisely because this output_buffering buffers all the output. The output will not be sent before 4096 bytes is reached or the script ends.
The function of ob_end_clean() and ob_end_flush() in the second piece of code is to terminate the buffering. In this way, there is no need to wait until there is a buffer of 4096 bytes before being sent out.
In the third piece of code, ob_flush() is used. Its function is to send the buffered data, but it does not terminate the buffering, so it must be used before each flush().
If we don't want to use ob_end_clean(), ob_end_flush() and ob_flush(), we must set the output_buffering in php.ini small enough, for example, set to 0. It should be noted that if you plan to use ini_set("output_buffering", "0") to set it in a script, then please stop, this method will not work. Because at the beginning of the script, the buffering settings have been loaded, and then buffering begins.
You may ask, since ob_flush() sends the buffered data, why do you need to use flush()??? Can't you just use the following code? ?
echo str_pad(" ", 256);
for ($i=10; $i>0; $i--)
{ echo $i;
ob_flush();
sleep(1); } ?>Please note the difference between ob_flush() and flush(). The former is to release data from PHP's buffer, and the latter is to send data that is not in the buffer or has been released to the browser. So when the buffer exists, we must use ob_flush() and flush() at the same time.
So is flush() indispensable here? No, we have another method so that when data is output, it is immediately sent to the browser. The following two pieces of code do not need to use flush(). (When you set output_buffering to 0, even ob_flush() and ob_end_clean() are no longer needed)
ob_implicit_flush(true);
echo str_pad(" ", 256);
for ($i=10; $i>0; $i--)
{ echo $i;
ob_flush();
sleep(1); } ?>
ob_implicit_flush(true);
echo str_pad(" ", 256);
for ($i=10; $i>0; $i--)
{ echo $i;
sleep(1); }
?> Please note ob_implicit_flush(true) above. This function forces the output to be sent to the browser immediately whenever there is output. In this way, there is no need to use flush() to send it to the browser after each output (echo).
The above argument may not be true in some browsers. Because browsers also have their own rules. I used Firefox1.5, IE6, opera8.5 to test. Among them, opera cannot output normally, because it has a rule that if it does not encounter an HTML tag, it will never output unless the script ends. FireFox and IE are relatively normal.
Excerpted from: Lin Xi’s blog

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version
