线上服务咨询
php
发表时间:2019-07-30 16:33:59
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
中的输出控制方法 缓冲输出<phpfor($ i=10; $ i> 0; $ i - ){echo $ i; flush(); sleep(1);}?>这个函数将根据php手册当前。程序的所有输出都发送到用户的浏览器。上面的代码应该每秒输出$ i。但实际上,情况并非如此。可能是在10秒之后,所有输出同时出现。好的,让我们更改此代码并将其更改为<phpob_end_clean(); //修改部分($ i=10; $ i> 0; $ i - ){echo $ i; flush(); sleep(1 );}}>嘿,添加了这句话ob_end_clean();没关系。实际上,我们也用ob_end_flush()替换了ob_end_clean()。我会再改变它。 <phpfor($ i=10; $ i> 0; $ i - ){echo $ i; ob_flush(); //修改flush()的一部分; sleep(1);}?>运行它,是没有找到$ i也每秒输出一次?为什么是这样?别担心,让我们来看看php.ini。打开php.ini并搜索output_buffering。我们将看到像这样的设置output_buffering=4096。就像它的名称output_buffering一样,此设置的目的是缓冲输出,缓冲区大小为4096bytes。在我们的第一个代码中,原因不是预期的,而是因为这个output_buffering缓冲了那些输出。如果它没有达到4096字节或脚本结束,则不会发送输出。 ob_end_clean()和ob_end_flush()在第二段代码中的作用是终止缓冲区。这样,您不必等到发送出去之前有4096字节的缓冲区。在第三个代码中,我们使用ob_flush(),它用于发送缓冲数据,但它不会终止缓冲区,因此必须在每次flush()之前使用它。如果你不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我们必须将php.ini中的output_buffering设置得足够小,例如为0.应该注意的是,如果你打算使用ini_set (“output_buffering”,“0”)在脚本中设置它,然后请停止,这种方法是不可接受的。由于缓冲区设置已在脚本开头加载,因此缓冲开始。也许你会问,因为ob_flush()是发送缓冲数据,为什么你需要使用flush()?直接用以下代码? <phpfor($ i=10; $ i> 0; $ i - ){echo $ i; ob_flush(); sleep(1);}?>请注意ob_flush()和flush()之间的区别。前者是从PHP缓冲区释放数据,后者是发送不在缓冲区中或释放到浏览器中的数据。因此,当缓冲区存在时,我们必须同时使用ob_flush()和flush()。这里不是冲洗()必不可少的吗?不,我们有另一种方法可以在数据可用时立即将数据发送到浏览器。以下两段代码不需要使用flush()。 (当你将output_buffering设置为0时,既不需要ob_flush()也不需要ob_end_clean())<phpob_implicit_flush(true); for($ i=10; $ i> 0; $ i - ){Echo $ i; ob_flush (); sleep(1);}?><phpob_end_clean(); ob_implicit_flush(true); for($ i=10; $ i> 0; $ i--)[Page] {Echo $ i; sleep (1);}}>查看上面的ob_implicit_flush(true),只要有输出,此函数就会强制将输出发送到浏览器。这样,您不需要在每个echo(echo)之后向浏览器发送flush()。
网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制