apache / php提前关闭连接(立即)

时间:2012-03-02 22:38:14

标签: php apache

我正在使用Spreadsheet Excel Writer将数据写入XLS文件。但是,由于要处理的记录很多,因此这种数据处理需要相当长的时间。

当我从命令行运行脚本时,需要18秒并按预期转储xls文件。

当我用curl请求它时,我得到一个极短的Content-Length设置,连接立即关闭,而不是等待脚本的其余部分执行/ file写入。此外,只有我的脚本中的“标题”字段才会在发送之前添加到工作簿中。

我该如何解决这个问题?

MWE:

<?php
require_once 'Spreadsheet/Excel/Writer.php';
require('ncbi_blast_parse_xml.inc.php');

$blastxml = fopen('test.xml','r');
$blastresults = new ncbi_blast_parse_xml($blastxml);
$blastresults->parse_it(); // This call takes ~10 seconds to execute when called from CLI
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();

// sending HTTP headers
$workbook->send('test.xls');

// Creating a worksheet
$worksheet =& $workbook->addWorksheet('My first worksheet');

$headers_array = array("Iteration Querydef","Iteration QueryLength"); //<SNIP>
for($i=0;$i<sizeof($headers_array);$i+=1){
        $worksheet->write(0, $i, $headers_array[$i]);
}
$row=1;
foreach($blastresults->Matches() as $match) {
    $z = 0;
    foreach($match['All Deflines'] as $defline) {
        //<SNIP>
        here is where the data is added to the workbook
        //<SNIP>
        $row++;
    }
}
// Let's send the file
$workbook->close();
?>

我运行的其他测试

main php script

我尝试在没有调用NCBI库的情况下运行,这似乎解决了一些问题。页面现在挂起,直到创建文件。看起来对parse_it()的调用不会导致线程等到该计算完成时(从Web运行)。

0 个答案:

没有答案