Foros del Web » Programando para Internet » PHP »

Problema PHP se cortan los procesos

Estas en el tema de Problema PHP se cortan los procesos en el foro de PHP en Foros del Web. Buenas tardes: Tengo un gran problema al generar informes - basicamente se generan en archivos TXT, se hace los querys y se imprime , algo ...
  #1 (permalink)  
Antiguo 17/09/2013, 16:25
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Problema PHP se cortan los procesos

Buenas tardes:

Tengo un gran problema al generar informes

- basicamente se generan en archivos TXT, se hace los querys y se imprime , algo basico

- Generando el informe de un momento a otro se corta, o se para lo que esta haciendo, asi no generando por completo el archivo,

- Pareciera que se agotara el tiempo y simplemente no sigiera ejecutadolo


- Los Informes pesan mas de 20mg,
- Se esta trabajando red local , osea que temas de coneccion no seria
- Ya he probado optimizando las consultas, pero el informe trae muchisima informacion que es algo logico que pese tanto

Favor que puedo hacer o como prodria solucionar este problema,

Nota: No tenemos B.I que seria la solucion final
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #2 (permalink)  
Antiguo 17/09/2013, 16:59
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Problema PHP se cortan los procesos

Hola como estas, generalmente se deben a dos motivos esos cortes.

1.PHP Fatal error: Maximum execution time of 30 seconds exceeded
Este error se debe a que el script se ejecuto por mas tiempo del permitido, por defecto PHP trae un limite de 30 segundos.
http://www.php.net/manual/es/functio...time-limit.php

2.Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate xxxxxx bytes)
Esto sucede cuando el script consume la memoria asignada por el servidor
http://www.php.net/manual/es/ini.cor...i.memory-limit

En los dos casos puedes modificar las directivas del php.ini o también en tiempo de ejecución puedes cambiar las mismas.

Saludos y espero que eso te oriente...
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 18/09/2013, 08:25
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Problema PHP se cortan los procesos

Cita:
Iniciado por portalmana Ver Mensaje
Hola como estas, generalmente se deben a dos motivos esos cortes.

1.PHP Fatal error: Maximum execution time of 30 seconds exceeded
Este error se debe a que el script se ejecuto por mas tiempo del permitido, por defecto PHP trae un limite de 30 segundos.
http://www.php.net/manual/es/functio...time-limit.php

2.Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate xxxxxx bytes)
Esto sucede cuando el script consume la memoria asignada por el servidor
http://www.php.net/manual/es/ini.cor...i.memory-limit

En los dos casos puedes modificar las directivas del php.ini o también en tiempo de ejecución puedes cambiar las mismas.

Saludos y espero que eso te oriente...

Te CUento
max_execution_time 30000 30000
memory_limit 1024M 1024M

- Como podras ver tiene suficiente memoria, no se si la instruccion memory_limit,
pero igual se corta,
- hay muchos informe ejecutandose al mismo tiempo, essto puede afectar
- igual hay muchos informes que pesan muchos mas.
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #4 (permalink)  
Antiguo 18/09/2013, 08:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema PHP se cortan los procesos

A mi me gustaría ver el código, no hay mejor información que eso.

Igual si dices que hay muchos reportes al mismo tiempo, ¿has optado por ejecutar cada proceso de manera aislada?

Aunque ya me imagino por dónde va la cosa, seguramente un script lleno de loops y consultas anidadas, sin caché, etc. ¿será?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/09/2013, 08:43
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Problema PHP se cortan los procesos

_ te doy una parte

Código PHP:
Ver original
  1. array_unique($ITEMID);
  2.     $reemplazar = array("<SPAN CLASS=TEXTITULO >","</SPAN>","&","-GT;","|");
  3.     $reemplazarB = array("<SPAN CLASS=TEXTITULO >","</SPAN>","&","-GT;");  
  4. foreach($locationids as $key=>$almacen){
  5.    
  6.     if($almacen>0){
  7.    
  8.                     $rc_almacen = &$conn->Execute(' SELECT
  9.                                                             UPPER(company.companyname)
  10.                                                     FROM
  11.                                                             inventorylocation,company
  12.                                                     WHERE
  13.                                                             inventorylocation.id = '.$almacen.'
  14.                                                             AND inventorylocation.companyid=company.id
  15.                                                             and company.cancel=0  
  16.                                                     order by
  17.                                                             company.companyname');
  18.    
  19.    
  20.     foreach($ITEMID as $b=>$itemid){
  21.        
  22.         $SQL='SELECT
  23.                         itemid,
  24.                         SUM(qty),
  25.                         SUM(sales_vr*qty),
  26.                         SUM(itemcost*qty),
  27.                         SUM(itemvta*qty),
  28.                         SUM(costnet*qty),
  29.                         SUM(total_sales)    as precio_total,
  30.                         SUM(sales_dcto)     as descuento_total
  31.               FROM
  32.                         sales_log
  33.               WHERE  
  34.                         itemid = "'.$itemid.'"
  35.                         AND locationid = "'.$almacen.'"
  36.                         AND date >= "'.$FechaIni.'"
  37.                         AND date <= "'.$FechaFinal.'"
  38.                         AND cancel = 0
  39.             GROUP BY itemid';
  40.        
  41.     if($rc_item = &$conn->Execute($SQL)===false)
  42.         {echo 'Error SQL{'.$SQL.'}';exit;}
  43.     /*itemid = "'.$itemid.'" AND*/
  44.    
  45.    
  46.    
  47.    
  48.    
  49.    
  50.    
  51.     if(!$rc_item->EOF){
  52.         while(!$rc_item->EOF){
  53.  
  54.             $InfoItem                   = $ItemD->infoqtycostprice($rc_item->fields[0],$almacen);
  55.             $ivaitem                    = $ItemD->itemIvA($rc_item->fields[0]);
  56.             $PVPsinIva                  = ($rc_item->fields[2]*100)/(100+$ivaitem);
  57.             $PVPsinIvaPig               = ($rc_item->fields[4]*100)/(100+$ivaitem);
  58.             ${"POSvta".$itemid}[]       = $rc_item->fields[2]/$rc_item->fields[1];
  59.             ${"PILOGvta".$itemid}[]     = $rc_item->fields[4]/$rc_item->fields[1];           
  60.             $precio_total               = $rc_item->fields['precio_total'];          
  61.             $descuento_total            = $rc_item->fields['descuento_total'];           
  62.             //unidades vendidas por almacen
  63.             ${"qty".$itemid.'_'.$almacen} = $rc_item->fields[1];
  64.  
  65.            
  66.             $agrupacion = trim(str_replace($reemplazarB,"|",$ItemD->itempurchase($rc_item->fields[0],'pay')));
  67.            
  68.             $agrup = explode('|',substr_replace($agrupacion,'',-1,1)); 
  69.     ############ ###################### ############################### ##########################################  ###########################  
  70. /**
  71.  * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  72.  */
  73. if($_REQUEST['automatic']!='TRUE'){
  74.    
  75.      echo $rc_almacen->fields[0].'|'.$ItemD->itemplu($rc_item->fields[0]).'|';
  76.     }
  77.  
  78.     $concate    .=$rc_almacen->fields[0].'|'.$ItemD->itemplu($rc_item->fields[0]).'|';
  79.    
  80.                         $salto = 1;
  81.                        
  82.                         $VecBarcod = $ItemD->Barcode($rc_item->fields[0]);
  83.  
  84.                         for($h=0;$h<count($VecBarcod);$h++){
  85.     ############ ###################### ############################### ##########################################  ###########################  
  86.                             /**
  87.                              * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  88.                              */
  89.                             if($_REQUEST['automatic']!='TRUE'){
  90.  
  91.                             echo trim($VecBarcod[$h]).' ';
  92.                                 }
  93.  
  94.                             $concate    .=trim($VecBarcod[$h]).' ';
  95.                         }  
  96.     ############ ###################### ############################### ##########################################  ###########################  
  97.             /**
  98.              * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  99.              */
  100.             if($_REQUEST['automatic']!='TRUE'){
  101.  
  102.                 echo '|'.$ItemD->itemsection($rc_item->fields[0]).'|'.$agrup[0].'|'.$agrup[1].'|'.$agrup[2].'|'.$agrup[3].'|'.$agrup[4].'|'.trim(str_replace($reemplazar,"",$ItemD->ItemDescription($rc_item->fields[0],'1'))).'|'.trim(str_replace($reemplazar,"",$ItemD->ItemDescription($rc_item->fields[0],'3'))).'|';
  103.                 $concate    .='|'.$ItemD->itemsection($rc_item->fields[0]).'|'.$agrup[0].'|'.$agrup[1].'|'.$agrup[2].'|'.$agrup[3].'|'.$agrup[4].'|'.trim(str_replace($reemplazar,"",$ItemD->ItemDescription($rc_item->fields[0],'1'))).'|'.trim(str_replace($reemplazar,"",$ItemD->ItemDescription($rc_item->fields[0],'3'))).'|';
  104.             }
  105.                                 $SLP='  SELECT
  106.                                                 itven.vendorid,
  107.                                                 itven.status
  108.                                             FROM
  109.                                                 itemvendor  AS itven,
  110.                                                 vendor      AS ven,
  111.                                                 company     AS comp
  112.                                             WHERE
  113.                                                 itven.itemid = '.$rc_item->fields[0].'
  114.                                                 AND itven.locationid = '.$almacen.'    
  115.                                                 '.$strVendorid.'
  116.                                                 AND itven.vendorid=ven.id
  117.                                                 AND ven.cancel=0
  118.                                                 AND itven.cancel = 0
  119.                                                 AND ven.paytocompanyid=comp.id
  120.                                                 AND comp.cancel=0
  121.                                             LIMIT 1';
  122.            
  123.            
  124.            if( $rc_vendor = &$conn->Execute($SLP)===false)
  125.             {echo 'Error SQL {'.$rc_vendor.'}';}       
  126.                 //echo $SLP;                           
  127.                                            
  128.             if($rc_vendor->RecordCount() === 0){
  129.                 /**
  130.              * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  131.              */
  132.             if($_REQUEST['automatic']!='TRUE'){
  133.                 echo '?|?|?|?|';
  134.                
  135.                 }
  136.  
  137.             $concate    .='?|?|?|?|';
  138.  
  139.             }else{
  140.             while(!$rc_vendor->EOF){
  141.                    
  142.                     if($rc_vendor->fields[1]){
  143.                             $strcompra = 'INACTIVO';
  144.                         }else{
  145.                             $strcompra = 'ACTIVO';
  146.                             }
  147.                 $noid           = $rc_vendor->fields[0];
  148.                
  149.                 $rc_vendorname  = &$conn->Execute(' SELECT
  150.                                                             UPPER(c.companyname)
  151.                                                     FROM
  152.                                                             company c,
  153.                                                             vendor v
  154.                                                     WHERE
  155.                                                             v.paytocompanyid = c.id
  156.                                                             AND v.id = '.$rc_vendor->fields[0].'');
  157.                 $vendornombre = trim(str_replace($reemplazar,"",$rc_vendorname->fields[0]));
  158.     ############ ###################### ############################### ##########################################  ###########################  
  159.             /**
  160.              * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  161.              */
  162.             if($_REQUEST['automatic']!='TRUE'){
  163.                
  164.                 echo $strcompra.'|'.$rc_vendor->fields[0].' :: '.$vendornombre.'|'.$signo.$ItemD->itemcostvendor($rc_item->fields[0],$rc_vendor->fields[0],$almacen).'|'.$ItemD->itemembalaje($rc_item->fields[0],$rc_vendor->fields[0]).'|';
  165.                    
  166.                     }
  167.  
  168.                 $concate    .=$strcompra.'|'.$rc_vendor->fields[0].' :: '.$vendornombre.'|'.$signo.$ItemD->itemcostvendor($rc_item->fields[0],$rc_vendor->fields[0],$almacen).'|'.$ItemD->itemembalaje($rc_item->fields[0],$rc_vendor->fields[0]).'|';
  169.                 $rc_vendor->MoveNext();
  170.             }
  171.             }  
  172.     ############ ###################### ############################### ##########################################  ###########################  
  173.             /**
  174.              * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  175.              */
  176.             if($_REQUEST['automatic']!='TRUE'){
  177.  
  178.                 echo number_format($InfoItem[1], 0,',','').'|'.number_format($InfoItem[2], 0,',','').'|'.number_format($InfoItem[6], 0,',','').'|'.number_format($rc_item->fields[1], 2,',','').'|'.number_format($rc_item->fields[3], 0,',','').'|'.number_format($rc_item->fields[5], 0,',','').'|'.number_format($PVPsinIva, 0,',','').'|'.number_format($rc_item->fields[2], 0,',','').'|'.number_format($PVPsinIvaPig, 0,',','').'|'.number_format($rc_item->fields[4], 0,',','').'|'.number_format((($PVPsinIva - $rc_item->fields[3])/$PVPsinIva)*100, 0,',','').'|'.$precio_total.'|'.$descuento_total;
  179.             }
  180.  
  181.                 $concate    .=number_format($InfoItem[1], 0,',','').'|'.number_format($InfoItem[2], 0,',','').'|'.number_format($InfoItem[6], 0,',','').'|'.number_format($rc_item->fields[1], 2,',','').'|'.number_format($rc_item->fields[3], 0,',','').'|'.number_format($rc_item->fields[5], 0,',','').'|'.number_format($PVPsinIva, 0,',','').'|'.number_format($rc_item->fields[2], 0,',','').'|'.number_format($PVPsinIvaPig, 0,',','').'|'.number_format($rc_item->fields[4], 0,',','').'|'.number_format((($PVPsinIva - $rc_item->fields[3])/$PVPsinIva)*100, 0,',','').'|'.$precio_total.'|'.$descuento_total;
  182.                
  183.             if($rc_vendor->RecordCount() === 1 && !$vendorid){
  184.  
  185.             $rc_vendor = &$conn->Execute('SELECT
  186.                                                 itven.vendorid,
  187.                                                 itven.status
  188.                                             FROM
  189.                                                 itemvendor  AS itven,
  190.                                                 vendor      AS ven,
  191.                                                 company     AS comp
  192.                                             WHERE
  193.                                                 itven.vendorid=ven.id
  194.                                                 AND ven.paytocompanyid=comp.id
  195.                                                 AND itven.itemid = '.$rc_item->fields[0].'
  196.                                                 AND itven.locationid = '.$almacen.'
  197.                                                 AND itven.cancel = 0
  198.                                                 AND ven.cancel=0
  199.                                                 AND comp.cancel=0
  200.                                                 AND vendorid != '.$noid.''  ); 
  201.  
  202. /*
  203.  
  204.             $rc_vendor = &$conn->Execute('SELECT
  205.                                                 vendorid,
  206.                                                 status
  207.                                             FROM
  208.                                                 itemvendor
  209.                                             WHERE
  210.                                                 itemid = '.$rc_item->fields[0].'
  211.                                                 AND locationid = '.$almacen.'
  212.                                                 AND cancel = 0
  213.                                                 AND vendorid != '.$noid.'');    */ 
  214.             while(!$rc_vendor->EOF){
  215.                 /**
  216.                  * SI NO VA POR AUTOMATICA, IMPRIME POR ACA
  217.                  */
  218.                 if($_REQUEST['automatic']!='TRUE'){
  219.                     echo "\r\n";
  220.                 }
  221.  
  222.                 $concate    .="\r\n";
  223.                 if($rc_vendor->fields[1]){ $strcompra = 'INACTIVO';}else{ $strcompra = 'ACTIVO';}
  224.                 $rc_vendorname = &$conn->Execute('SELECT

- es un informe de venta que en teoria lo hace por sucursales y productos
- es un promedio de 53.000 registros, siendo de los de menos registros
- este informe se podria optimizar pero igual hay mas informes ya optimizados, no utilizando mas de 2 tablas por consulta, pero esto no mejora,
- cuando se ejecuta varios informes se hace d varios PC
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #6 (permalink)  
Antiguo 18/09/2013, 12:11
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problema PHP se cortan los procesos

Hola, he revisado el código y me parece interesante, ya que parece que es de un proyecto real.

1.- Debes optimizar tu código; hay repetido.

Ejemplo

Código PHP:
Ver original
  1. if($_REQUEST['automatic']!='TRUE'){
  2.  
  3.  echo number_format($InfoItem[1], 0,',','').'|'.number_format($InfoItem[2], 0,',','').'|'.number_format($InfoItem[6], 0,',','').'|'.number_format($rc_item->fields[1], 2,',','').'|'.number_format($rc_item->fields[3], 0,',','').'|'.number_format($rc_item->fields[5], 0,',','').'|'.number_format($PVPsinIva, 0,',','').'|'.number_format($rc_item->fields[2], 0,',','').'|'.number_format($PVPsinIvaPig, 0,',','').'|'.number_format($rc_item->fields[4], 0,',','').'|'.number_format((($PVPsinIva - $rc_item->fields[3])/$PVPsinIva)*100, 0,',','').'|'.$precio_total.'|'.$descuento_total;
  4.  }
  5.  
  6.  $concate .=number_format($InfoItem[1], 0,',','').'|'.number_format($InfoItem[2], 0,',','').'|'.number_format($InfoItem[6], 0,',','').'|'.number_format($rc_item->fields[1], 2,',','').'|'.number_format($rc_item->fields[3], 0,',','').'|'.number_format($rc_item->fields[5], 0,',','').'|'.number_format($PVPsinIva, 0,',','').'|'.number_format($rc_item->fields[2], 0,',','').'|'.number_format($PVPsinIvaPig, 0,',','').'|'.number_format($rc_item->fields[4], 0,',','').'|'.number_format((($PVPsinIva - $rc_item->fields[3])/$PVPsinIva)*100, 0,',','').'|'.$precio_total.'|'.$descuento_total;

La diferencia es que una parte haces echo ese es un problema y en la otra, concatenas el resultado.
Esto es muy sencillo de unificar y no repetir una enorme y horrible linea de código.

2.- Te recomiendo que separes la lógica completamente de lo que haces con tus datos.

3.- Has pruebas de ver en donde se esta tomando mucho tiempo la ejecución.
has un simple tester con microtime(). y PUEDAS SABE QUE OPTIMIZAR.
EJEMPLO: (NO USABLE)
$VAR1=microtime();
//CODIGO A EJECUTAR.
$VAR2=microtime();
$TIEMPO=VAR2-VAR1

Saludos
  #7 (permalink)  
Antiguo 18/09/2013, 12:47
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problema PHP se cortan los procesos

En vista que tienes un proyecto bastante complejo, con tablas que sólo tú conoces hasta el momento, podrías mostrarnos:

A- En qué parte de tu script empieza a cortarse el proceso?

B- Qué esta mostrando basicamente?

:)
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #8 (permalink)  
Antiguo 18/09/2013, 13:04
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Problema PHP se cortan los procesos

- Lo curioso del tema es que no hay un patron del donde se corte
- es un informe de ventas donde tengo que consultar muchisimas tablas,
- respecto a la repeticion de codigo, estamos de acuerdo, ya estoy en esa labor, pero igual tengo muchos informes mas, ya optimizados,
- tratando de hacer consultas a 2 tablas y luego crear un array, pero pues no nada
- les agradesco si tienen otro metodo de generar consultas,
- si lo gardo directamente al server en un txt,
-o si lo meto en una tabla temporal para luego exportarlo, no se cual sea la mejor practica
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #9 (permalink)  
Antiguo 18/09/2013, 13:11
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problema PHP se cortan los procesos

La tabla temporal toda la vida...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #10 (permalink)  
Antiguo 18/09/2013, 13:16
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problema PHP se cortan los procesos

Hola, otra cosa que veo es que solo aplicas revision de errores sql a algunas consultas, no a todas.

Saludos.
  #11 (permalink)  
Antiguo 18/09/2013, 13:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema PHP se cortan los procesos

Y encima nada de crear un log para registrar de cada paso, ¿depurar el código? ¡pero que va!

Así de pronto es una caja oscura, no creo que haya humano capaz de adivinar una solución adecuada y mágica.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 18/09/2013, 13:21
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Problema PHP se cortan los procesos

Si yo estubiera en tu caso, haria una reingenieria de procesos y una refactorización del código; sin miedo.

A lo mejor ya hubieras terminado.

Saludos
  #13 (permalink)  
Antiguo 18/09/2013, 14:53
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Problema PHP se cortan los procesos

Cita:
Iniciado por Erick_MD9 Ver Mensaje
Si yo estubiera en tu caso, haria una reingenieria de procesos y una refactorización del código; sin miedo.

A lo mejor ya hubieras terminado.

Saludos

- Decirle a una empresa Retail que mueve mas de USD $200 millones anuales, hacer una reingenieria de procesos, no es la mejor opcion, respectoa a la reingenieria de codigo, si lo estoy haciendo, a ver , le estoy contando
__________________
---------
cubesoftechnology.com
Wizanchez,,

Etiquetas: procesos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:33.