php sleep()的问题 请看详细
发布网友
发布时间:2022-04-07 06:34
我来回答
共6个回答
懂视网
时间:2022-04-07 10:55
所以, 正确使用俩者的顺序是. 先ob_flush, 然后flush,
当然, 在其他sapi下, 不调用flush也可以, 只不过为了保证你代码的可移植性, 建议配套使用.
本文转载自:https://blog.csdn.net/qq_28602957/article/details/66973431
推荐:PHP视频教程
热心网友
时间:2022-04-07 08:03
如果让页面一秒打出一个,怎么做?
我i就直接点吧:不可能做到的。
直观点告诉你:它是让程序跑完之后才能作输出的。
PHP为后台语言,不像Java,
Java里如果你布局了一个JTextArea,即跟html的textarea一样。
append 数据到JTextarea后,它不会实时显示的,刷新之后才能。
既然是菜鸟,应该听取别人的建议。
热心网友
时间:2022-04-07 09:21
很简单,你要理解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一起出来了
能不能测试一下再发出来呢
热心网友
时间:2022-04-07 10:56
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'];
}
热心网友
时间:2022-04-07 12:47
<?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();
?>
热心网友
时间:2022-04-07 14:55
在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_mp(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追问哥,你这是什么呀? 直接粘贴能用?