Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SerraVentura

Estouro de memória com XML "muito grande"...

Recommended Posts

Estou com o seguinte problema.

 

Tenho uma aplicação que carrega um XML para uma Stored Procedure no SQL Server 2000, lá dentro a SP desmembra esse XML e utiliza os dados dele onde se deve utilizar...

 

Quando Carrego Arquivos XML pequenos, cerca de 500Kb funciona normalmente, porém quando tenho um XML "muito grande" da um erro de estouro de memória, cerca de 700 a 800 KB, o que ainda é muito pequeno...

 

Sendo que a tendencia é que esse arquivo XML fique bem maior, cerca de 10MB. Alguém saberia como resolver esse problema ?

 

vou passar meu código abaixo até a chamada da procedure...

 

 

FORM:

<script language="jscript">

  var oXML  = new ActiveXObject("MSXML2.DomDocument");
  var oHTTP = new ActiveXObject("MSXML2.XMLHTTP");

  function atualizaReadyState(){
	if (oHTTP.readyState==4)
	 {
	 alert(oHTTP.responseText)
	 }

  }
   


  function doUpload(){

	
	oXML.load(document.all("xml").value);
	
	oHTTP.open("POST", "/Carga.asp", true);
	oHTTP.send(oXML);
	oHTTP.onreadystatechange=atualizaReadyState;
	
   
  }

 

 </script>
</head>

<body  marginwidth=0 marginheight=0 style="padding: 0px" >

 
 <form name="frm" method="Post" >
 <table width="100%" height="100%" cellspacing="0" cellpadding="0">
  <tr>
   <td align="center" valign="middle">
	<div style="width: 25%">
	 <table border=1 cellspacing="0" >
	  <tr>
	   <td>Selecione arquivo:
	   </td>
	  </tr>

	  <tr>
	   <td><input type="file" name="xml" id="xml" style="width: 100%"/>
	   </td>
	  </tr>

	  <tr>
	   <td align="right"><input type="button" name="btnSubmit" onClick="doUpload()" value="enviar"/>
	   </td>
	  </tr>
	 </table>
	</div>
   </td>
  </tr>
 </table>
 </form>

 </body>

 

Carga

<%

 Server.ScriptTimeout=600

 Response.CharSet="iso-8859-1"
 Response.Buffer=true

 DIM oXML   : SET oXML  = Server.CreateObject("MSXML2.DOMDocument")

 Dim strXML
 Dim lObj
 Dim lObjSize
 Dim lObjOffset  :lObjOffset =0
 Dim lObjChunk
 Dim lObjChunkSize :lObjChunkSize= 4000

 

 Dim oConn   : Set oConn = Server.CreateObject("ADODB.Connection")
 Dim oComm   : Set oComm = Server.CreateObject("ADODB.Command")
 Dim oRSet   : Set oRSet = Server.CreateObject("ADODB.RecordSet")

 

  oXML.load Request

  strXML = "<?xml version=""1.0"" encoding=""ISO-8859-1""?>"&oXML.xml

 

  with (oComm)

   .ActiveConnection= oConn
   .CommandType  = adCMDStoredProc
   .CommandText  = "SP_CARGA"
   .commandTimeout  = 600
   
   .Parameters.refresh
   
   lObj = strXML
   lngOffset = 0

   lObjSize = len(lObj)


   Do While lObjOffset < lObjSize
	lObjChunk = Left(Right(lObj, lObjSize - lObjOffset), lObjChunkSize)
	.Parameters("@XML").AppendChunk lObjChunk
	lObjOffset = lObjOffset + lObjChunkSize
   Loop

   .execute

  end with

%>

Se alguém puder dar uma ajuda.

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei, deu no mesmo...

 

Analisando, debugando cheguei a conclusão que a aplicação consegue pegar o XML que é passado, porém quando esse arquivo é muito grande ele não vem completo, não traz tds os nós, com isso gera um erro dentro da procedure...

 

mas tow achando que o XML não esta chegando inteiro, pois deve existir um limite de caracteres que podem ser passados pelo metodo POST... Sendo que estou utilizando ajax (com POST) pra passar esse XML para pagina...

 

acredito q por isso da o erro em relação a memória...

 

agora a questão é a seguinte... como posso passar tantos dados via POST, por Ajax ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisando, debugando cheguei a conclusão que a aplicação consegue pegar o XML que é passado, porém quando esse arquivo é muito grande ele não vem completo, não traz tds os nós, com isso gera um erro dentro da procedure...

 

mas tow achando que o XML não esta chegando inteiro, pois deve existir um limite de caracteres que podem ser passados pelo metodo POST... Sendo que estou utilizando ajax (com POST) pra passar esse XML para pagina...

 

acredito q por isso da o erro em relação a memória...

 

agora a questão é a seguinte... como posso passar tantos dados via POST, por Ajax ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.