我有同样的问题。通常,在服务器没有发送任何内容3分钟后,浏览器会超时。对于大多数这些长时间的操作,我能够定期输出一个点来保持浏览器的活跃,但是当涉及到从服务器端CSV文件导入20M记录的一些非常长的查询时,我不得不以另一种方式来考虑。
cUrl是答案。
所以这就是我所做的。
<?
function get_page($page)
{
$ch = curl_init($page);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_NOPROGRESS,false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,'progress');
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
}
function progress($clientp,$dltotal,$dlnow,$ultotal,$ulnow='')
{
echo '. ';
flush();
return(0);
}
get_page('http://www.example.com/my_extremely_long_operation_script.php');
?>
即使没有来自服务器的输出,curl会定期更新下载进度。
解决!
问题可能与任务本身有关。尝试让应用程序在没有运行任务的情况下运行,并查看是否会在20分钟后停止相同的白屏和/或CF服务器。 –
我不确定我是否明白你的意思......我并不怀疑应用程序变量是否持续分配时间......并且任务正在徘徊......因为我可以看到更新每个记录的db中的时间。 ...它只是在一个时间点停止,这是我设置的任何超时之前的方式... – jpmyob