我有同樣的問題。通常,在服務器沒有發送任何內容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