问题时这样的,我循环定义了一个5000字节的字符串变量outText, 然后循环echo '<!--'.$outText."-->\n"; 每次echo完了紧接着我要调用setDownProgress()这个js函数处理页面上的一些事情,目的是先向客户端传送5000字节,等客户端收到了,然后再调用setDownProgress(),现在问题在于,我在有的服务器空间上测试的结果是 $outText的5000字节内容不需要从服务器端传送到客户端就可以在客户端的页面上显示出来,而有的服务器空间上测试则 $outText的5000字节内容是需要从服务器端传送到客户端后 setDonwProgress()才执行,这是为什么,是服务器端php的运行方式有不同嘛?
我是php小白,想自己写个脚本测试服务器到本地的网速,脚本在有的空间上是正常的,有的则出现上述的问题。$outText = getTestText();
for($i = 1;$i<100;$i++){
echo '<!--'.$outText."-->\n";
echo "<script type=\"text/javascript\">setDownProgress();</script>\n";
}function getTestText(){
$result;
for($i = 0;$i<5000;$i++){
$result .= '*';
}
return $result;
}
我是php小白,想自己写个脚本测试服务器到本地的网速,脚本在有的空间上是正常的,有的则出现上述的问题。$outText = getTestText();
for($i = 1;$i<100;$i++){
echo '<!--'.$outText."-->\n";
echo "<script type=\"text/javascript\">setDownProgress();</script>\n";
}function getTestText(){
$result;
for($i = 0;$i<5000;$i++){
$result .= '*';
}
return $result;
}
echo 是在服务器端执行。
setDownProgress()是js函数,客户端执行。
试试
<script>
function setDownProgress()
{
document.writeln("Hello world")
}
</script>
<?php
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);
ob_start();
$outText = getTestText();
for($i = 1;$i<100;$i++){
echo '<!--'.$outText."-->\n";
echo "<script type=\"text/javascript\">setDownProgress();</script>\n";
ob_flush();
flush();
sleep(1);
}
ob_end_clean();function getTestText(){
return str_pad(" ",ini_get('output_buffering'));
}
?>
这东西慎用,和具体服务器环境挂得比较紧密。
你用ajax轮询的方式比较好。