我有以下文件处理单个XML 文件并将其作为一行推送到数据库中。单个文件完美。
现在我想把所有文件放在这样的目录中,然后编写一个脚本来遍历目录并逐个推送其中的所有文件。并且 是的,它确实有效,但在处理XX(可变)文件数量后停止了
虽然我的XML文件可能有问题,所以决定在目录中只安装SINGLE XML文件(之前已完美处理),然后循环遍历它,插入数百次,以便我可以确认它我的文件有问题。但猜猜发生了什么?
处理XX(可变)文件数量后,处理停止。在我的下面的例子中,它在重复尝试后停在110(计数器值),111,99等。它应该处理1000个文件。
<?php
include_once '../includeTop.php';
header ( 'Content-type: text/xml' );
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$dir = "../../newHotelFiles";
$file = NULL;
$fileName = "noFileName";
$processed = 0;
util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );
try {
echo XMLInterface::openTag ( "start" );
for($counter = 0; $counter < 1000; $counter ++) {
$dirHandle = opendir ( '../../newHotelFiles' );
while ( false !== ($file = readdir ( $dirHandle )) ) {
//process my files codes
$processed ++;
util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );
}
}
//util::writeToLog($dir.'/progressData.tmp', "Done ".$counter);
}
echo XMLInterface::closeTag ( "start" );
exit ();
} catch ( Exception $e ) {
echo XMLInterface::failure ( "Error occured. Written to the log file - $file.log" );
util::writeToLog ( "../../newHotelFiles/$fileName.log", ExceptionHandler::error_msg ( $e ) );
exit ();
}
?>
有什么问题?它是脚本(我怀疑它在for循环不存在时是否有效)或者是否有任何服务器端限制我不知道
答案 0 :(得分:2)
php中有一个名为set_time_limit()的最大执行时间限制; (和其他人一样)
set_time_limit(0); // sets to unlimited
答案 1 :(得分:1)
由于时间限制,脚本可能正在中止。尝试修改set_time_limit。