2012-03-20 80 views
0

我参加一个PHP程序的开发,我们正在努力提高其在一样的东西表现:PHP标记输出完成

执行,完成输出给用户,做计划的东西。

这里的目标是发送信息到Apache,IIS等...指出关于所有信息已完成可以发送到浏览器。因为在这个程序中工作的方式,它不应该缓存所有的输出,测量它,然后输出,它应该尽快输出信息,因此ob_ *函数不是一个完全可以选择的选项。

我该如何做到这一点?我只能在使用输出缓冲时找到这个选项...

注意:curl也不是一个选项。一些服务器在这个应该工作,它已被禁用。 相同的其他常见的东西,shell_exec(),exec()等...

+1

我真的不明白你试图在这里做什么。 – netcoder 2012-03-20 20:18:31

+0

doest [that] [1]帮助你? [1]:http://stackoverflow.com/questions/5339393/how-to-finish-http-response-and-do-further-process-in-php – maosmurf 2012-03-20 20:18:52

+0

@ user671373不是真的.. 。我只找到了一些可行的方法,但平台必须是linux,所以...不是一种选择。 – brunoais 2012-03-20 20:34:33

回答

0

你确实想使用ob_函数。

<?php 

set_time_limit(300); 

ob_start(); 

echo "Starting task 1..."; 
long_task_1(); 
echo "Task 1 complete".  
ob_flush(); 
flush(); 


echo "Starting task 2..."; 
long_task_2(); 
echo "Task 2 complete".  
ob_flush(); 
flush(); 


echo "Starting task 3..."; 
long_task_3(); 
echo "Task 3 complete".  
ob_flush(); 
flush(); 

?> 

Reference.

+0

这是如何解决我的问题?在所有我想要输出的输出完成后,如何在没有用户等待页面完成加载并完成所有输出的加载后执行工作? – brunoais 2012-03-20 20:37:09

+0

这只是一个例子......我将更新答案,以便更贴近您的用例。 – AndrewR 2012-03-20 20:39:27

+0

请参阅更新的答案。 – AndrewR 2012-03-20 20:41:16