Получить PHP-скрипт для вывода результата после завершения - браузер продолжает работать - PullRequest
0 голосов
/ 25 января 2012

У меня есть PHP-скрипт, который записывает данные в файлы группами по 5000 строк. Когда все строки записаны в файл (ы), он должен вывести время, необходимое для запуска скрипта. Вместо этого происходит то, что скрипт, по-видимому, постоянно работает в браузере, и выходные данные никогда не появляются, но файл (ы) существуют, что означает, что скрипт запущен. Это происходит только с большими объемами данных. Есть предложения?

$startTime = time();

    $ID = '123';

$productBatchLimit = 5000;  
$products = new Products();
$countProds = $products->countShopKeeperProducts();     
//limit the amount of products
//if ($countProds > $productBatchLimit){$countProds = $productBatchLimit; } 

$counter = 1;   

for ($i = 0; $i < $countProds; $i += $productBatchLimit) {  
    $xml_file = 'xml/products/'. $ID . '_'. $counter .'.xml';
    $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    $xml .= "<products>\n";
    //create new file
    $fh = fopen($xml_file, 'a');
    fwrite($fh, $xml);  

    $limit = $productBatchLimit*$counter;
    $prodList = $products->getProducts($i, $limit);     
        foreach ($prodList as $prod ){

            $xml = "<product>\n";
            foreach ($prod as $key => $value){
                $value = functions::xml_entities($value);
                $xml .= "<{$key}>{$value}</{$key}>\n";
            }
            $xml .= "</product>\n";
            fwrite($fh, $xml);
        }   

    $counter++; 
    fwrite($fh, '</products>');
    fclose($fh);            
}


//check to see when XML is fully formed
$validxml = XMLReader::open($xml_file);
$validxml->setParserProperty(XMLReader::VALIDATE, true);

if ($validxml->isValid()==true){
    $endTime = time();
    echo "Total time to generate results: ".($endTime - $startTime)." seconds. \n";     
} else {
    echo "Problem saving Products XML.\n";
}
...