Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何运行和显示函数序列,不要等到全部完成再显示1次_Php_Multithreading_Sequence - Fatal编程技术网

PHP如何运行和显示函数序列,不要等到全部完成再显示1次

PHP如何运行和显示函数序列,不要等到全部完成再显示1次,php,multithreading,sequence,Php,Multithreading,Sequence,作为标题,我有一个带有一些函数的脚本,当我运行该文件(在Web服务器上)时,它将等待所有函数完成,然后在屏幕上一次性显示所有结果。 我只想运行一个函数并显示其结果,然后执行下一个函数。例如: <?php function Fun1(){ echo 'Done 1st func'; sleep(3); //This is run time of Func1 } function Fun2(){ echo 'Done 2nd func'; sleep(3); //This is run tim

作为标题,我有一个带有一些函数的脚本,当我运行该文件(在Web服务器上)时,它将等待所有函数完成,然后在屏幕上一次性显示所有结果。 我只想运行一个函数并显示其结果,然后执行下一个函数。例如:

<?php
function Fun1(){
echo 'Done 1st func';
sleep(3); //This is run time of Func1
}
function Fun2(){
echo 'Done 2nd func';
sleep(3); //This is run time of Func2
}
function Fun3(){
echo 'Done 3rd func';
}
?>

然后,结果将首先显示为:

完成第一次功能

Func1加载3s后,添加了另一行:

完成第二次功能

Func2加载3s后

完成第三次功能

不是这样(等待6秒后):

完成第一个函数
完成第二个函数
完成第三个函数


提前感谢:)

您没有指定是在命令行还是在web服务器上运行脚本。但由于在CLI中运行它已经产生了输出,因此我假设您将在Apache中使用它

为了在输出发生时立即显示,您需要清除PHP的输出缓冲区并立即刷新输出

以下是一个例子:

<?php
while(ob_get_level()) ob_end_clean();
ob_implicit_flush(true);

function Fun1(){
    echo 'Done 1st func';
    sleep(3); //This is run time of Func1
}
function Fun2(){
    echo 'Done 2nd func';
    sleep(3); //This is run time of Func2
}
function Fun3(){
    echo 'Done 3rd func';
}
?>


注意:只要PHP作为Apache模块安装,这就可以工作。您可以在phpinfo()中检查它;。如果它是作为CGI处理程序或FastCGI安装的,那么您也必须为它们禁用输出缓冲区。

您没有指定是在命令行还是在web服务器上运行脚本。但由于在CLI中运行它已经产生了输出,因此我假设您将在Apache中使用它

为了在输出发生时立即显示,您需要清除PHP的输出缓冲区并立即刷新输出

以下是一个例子:

<?php
while(ob_get_level()) ob_end_clean();
ob_implicit_flush(true);

function Fun1(){
    echo 'Done 1st func';
    sleep(3); //This is run time of Func1
}
function Fun2(){
    echo 'Done 2nd func';
    sleep(3); //This is run time of Func2
}
function Fun3(){
    echo 'Done 3rd func';
}
?>


注意:只要PHP作为Apache模块安装,这就可以工作。您可以在phpinfo()中检查它;。如果它是作为CGI处理程序或FastCGI安装的,那么您也必须为它们禁用输出缓冲区。

我在Nginx Web服务器上运行它,并通过浏览器输出:(似乎它在Nginx上不起作用。您可能需要搜索如何在Nginx上执行此操作。下面是一些值得检查的内容:Hi@lbrahim您知道如何限制每个循环可以运行的时间吗?例如:
code
$i=0;而(1){sleep($i);$i++},如果一个回合运行超过5秒,则中断它并继续循环…不使用线程有点棘手。您可以尝试使用
set\u time\u limit()
在您的函数中,因为它支持本地作用域。如果这对您不起作用,那么您就倒霉了。请注意,睡眠函数将不计入时间限制,因此您需要其他没有睡眠的测试场景。我在Nginx Web服务器上运行它,并通过浏览器输出:(似乎它在Nginx上不起作用。您可能需要搜索如何在Nginx上执行此操作。下面是一些值得检查的内容:Hi@lbrahim您知道如何限制每个循环可以运行的时间吗?例如:
code
$i=0;而(1){sleep($i);$i++},如果一个回合运行超过5秒,则中断它并继续循环…不使用线程有点棘手。您可以尝试使用
set\u time\u limit()
在您的函数中,因为它支持本地作用域。如果这对您不起作用,那么您就倒霉了。请注意,sleep函数不会计入时间限制,因此您需要其他不带sleep的测试场景。