php sleep()的问题 请看详细

for($i=0;$i<5;$i++){echo$i;sleep(1);}页面会延迟5秒后把01234一起打出来如果让页面一秒打出一个,怎么做?cli模式不要,配合js的... for ($i = 0; $i < 5; $i++){
echo $i;
sleep(1);
}
页面会延迟5秒后 把01234 一起打出来
如果让页面一秒打出一个,怎么做?
cli模式不要, 配合js的不要,能实现吗?
不是不懂,是你这个根本不好使, ie10 php5314 iis7.5 fastCgi模式, 你自己去测试
测试好用了再发出来,别装大手, 还羞辱我是菜鸟
展开
 我来答
jimrontse
2013-08-05 · 超过24用户采纳过TA的回答
知道答主
回答量:117
采纳率:0%
帮助的人:57.7万
展开全部
如果让页面一秒打出一个,怎么做?

我i就直接点吧:不可能做到的。

直观点告诉你:它是让程序跑完之后才能作输出的。

PHP为后台语言,不像Java,

Java里如果你布局了一个JTextArea,即跟html的textarea一样。

append 数据到JTextarea后,它不会实时显示的,刷新之后才能。

既然是菜鸟,应该听取别人的建议。
尽兴8
推荐于2018-05-18
知道答主
回答量:20
采纳率:0%
帮助的人:14.9万
展开全部
很简单,你要理解php的缓冲,如下程序可以实现:
<?php
//这是防止浏览器的缓存
echo str_repeat(" ",1024);
for($i=0;$i<5;$i++){
echo $i;
sleep(1);
flush();//会每隔1s输出一个数字,但是使用ob_flush()会等待5s一起输出
}
?>
关于缓冲和flush()和ob_flush(),ob_end_flush()详细介绍:http://www.phpddt.com/php/flush.html
如果你还不懂可以问我
追问
我写的这些 关于字节 缓冲区什么的 我都懂,
但是不行, 还是延迟5秒后 01234一起出来了
能不能测试一下再发出来呢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
房琨瑶07n
2013-07-31 · TA获得超过121个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:106万
展开全部
url提出请求 服务器将请求交给php引擎处理 处理好的结果以html形式返回给服务器最终将结果返回给请求;我在想在 php没执行结束之前是不会返回结果的吧;这个是我个人意见;不过我有个方法不知道适不适合你
<?php session_start(); if(!isset($_SESSION['i']) || $_SESSION['i']<4){?>
<meta http-equiv="Refresh" content="1;URL=<?php echo 'add.php?'.rand(0,999);?>" />
<?php }else{echo$_SESSION['tmp']; unset($_SESSION['i']);unset($_SESSION['tmp']);exit();}?>
<?php
if(isset($_SESSION['i'])){
$tmp=$_SESSION['i'];
$_SESSION['i']=$_SESSION['i']+1;
$_SESSION['tmp']=$_SESSION['tmp'].$_SESSION['i'];
echo $_SESSION['tmp'];
}
if(!isset($_SESSION['i']))
{
$_SESSION['i']=0;
$_SESSION['tmp']=$_SESSION['i'];
echo $_SESSION['tmp'];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuxinzy
2013-07-31 · TA获得超过247个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:268万
展开全部
<?php
set_time_limit(0);

$i = 1000;
ob_start();
while ($i--) {

echo '第'.(1000-$i).'条'.PHP_EOL;
ob_flush();
flush();
if($i%222==0){
sleep(10);
}else{
sleep(1);
}
}
ob_end_clean();
?>
更多追问追答
追问
利用缓冲区 我理解  set_time_limit(0);我也理解 PHP_EOL 这个是?
而且这种方法也不行,也是页面延迟到一定时间后 一起打出来结果
追答
PHP_EOL     回车符   例如在 命令模式下回转成  linux, \n  ,  win 下  \r\n 

浏览器中 PHP_EOL 这个 换成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d17ae86
2013-07-31
知道答主
回答量:3
采纳率:0%
帮助的人:5.2万
展开全部
在php中,__sleep和___wakeup是两个分别自对象序列化前和后分别调用的方法,
其中__sleep在一个对象序列化前调用,它不接收任何参数,但会返回数组,这里可以放置哪些属性需要序列化,比如下面的例子:
class Customer {
private $name;
private $credit_card_number;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function setCC($cc) {
$this->credit_card_number = $cc;
}
public function getCC() {
return $this->credit_card_number;
}
public function __sleep() {
return array(“name”); //只有name会序列化 }
}
$c = new Customer();
$c->setName(“Stuard+http://www.01yun.com”);
$c->setCC(“456789″);
$data = serialize($c).”\n”;
echo $data.”\n”;
Output:
O:8:”Customer”:1:{s:14:” Customer name”;s:5:”Stuard”;}
上面在序列化前,__sleep中指定了只有name属性会序列化,而creaditcard不会。
而__wakeup则相反,它是在反序列化前触发的,比如下面例子:
class Customer {
private $name;
private $credit_card_number;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function setCC($cc) {
$this->credit_card_number = $cc;
}
public function getCC() {
return $this->credit_card_number;
}
public function __sleep() {
return array(“name”);
}
public function __wakeup() {
if($this->name == “Stuart”) {
//重新在数据库中获得
$this->credit_card_number = “1234567890123456″;
}
}
}
$c = new Customer();
$c->setName(“Stuart+http://www.01yun.com/php/index.html”);
$c->setCC(“1234567890123456″);
$data = serialize($c).”\n”;
var_dump(unserialize($data));
Output:
object(Customer)#2 (2) {
["?name:private"?]=>
string(5) “Stuart”?
["?credit_card_number:private"]=>
string(16) ’1234567890123456?
}详细见:http://www.01yun.com/other/20130110/65015.html
追问
哥,你这是什么呀?  直接粘贴能用?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式