Problema import per aggiornamento

egialma

Nuovo Utente
3 Ott 2012
29
0
0
Ciao a tutti, prima che qualcuno mi riprenda per aver messo in questa sezione il presente messaggio rispondo dicendo che sinceramente non sapevo in quale sezione "postarlo".
Ecco il dunque, ho un problema che sto rincorrendo da circa un mese e non riesco a venirne a capo perciò mi rivolgo a voi guru dei sistemi per avere una mano.

Sto utilizzando un database MySQL, un web server apache e PHP per gestire l'inserimento in un archivio, tramite pagine web, di dati relativi a diverse attività.

Da quello che ho capito il database e il web server si trovano sulla stessa macchina remota, ovviamente non sono io a gestire il server, ma sono solo un utilizzatore del web server e amministratore del solo mio db, e non del sistema.

Il collegamento al db e al web server avviene tramite una connessione VPN SSL (Adito) che apre un portale sul PC server.

Ora devo aggiornare il db con dei dati che risiedono in 7 file in formato testo; ho provato diverse strade ma arrivati ad un certo punto le ho trovate tutte sbarrate:

1) tentativo, ho provato a recuperare i dati tramite VBA per Access elaborarli estraendo alcuni dati e riducendo il numero dei file a 4, salvarli in formato xml e importali con php nel database; l'ostacolo incontrato è stato le dimensioni enormi dei file, php si piantava nel tentativo di elaborare i file.

Due premesse, la prima i file txt sorgenti con cui dovrei aggiornare il db si trovano su un'altra rete e sono raggiungibili esclusivamente da VPN cisco, perciò non posso usare php per estrarre i file, ecco perchè l'utilizzo di Access.
La seconda, i file txt comprendono in media circa 180 colonne per 47000 righe ecco perché i file xml sono enormi.

2) tentativo, sempre da access recupero i file e li elaboro come nel tentativo precedente, solo che adesso ho provato a salvare i 4 file in formato testo per importarli, in secondo tempo, con php nel database. Sono riuscito a elaborare in php i file,in formato testo le dimensioni sono più ridotte, sistemarli secondo le mie esigenze e importarli nel db; l'ostacolo in questo caso è stato il tempo di esecuzione di php per l'inserimento, nelle prove avevo usato un file con qualche riga, 3 - 4 righe e funzionava, ma con i file completi no, andava in time error, ho provato ad estendere il set_time_limit fino a 1000, ma il risultato non è cambito di molto poiché questa volta era il timer del Web serve che scadeva. Ho sentito il gestore del server il quale mi ha detto che non poteva allungare ulteriormente il tempo per l'esecuzione delle pagine web poichè sarebbero rimaste caricate nella cache del server, anche dopo la loro esecuzione, per troppo tempo, affossando le performance del sistema... (io non sono un esperto e mi fido di ciò che mi ha detto)

3) tentativo, sempre da access recupero i file e li elaboro come nel tentativo precedente in formato testo, questa volta li ho elaborati in php e ho creato altri file sempre in formato testo da importare nel database con l'ausilio di workbench. Anche in questo caso devo precisare una cosa, ho provato ad importare i file testo direttamente nel db senza passare dall'elaborazione in php, ma non ha funzionato, il motivo principale scoperto è la presenza di campo nulli nei file che MySQL non riesce a riconoscere e perciò faceva slittare il dato contenuto in una colonna nella colonna precedente danneggiando in questo modo l'informazione da inserire nel db.
In questo caso la procedura prevede l'aggiornamento del db, tramite il caricamento dei file txt, rielaborati da php, in tabelle generate appositamente, una per file e poi tramite query di insert e update andare a modificare le tabelle contenenti i dati.
La procedura veniva passata a workbench tramite un file di script in sql; l'ostacolo in questo caso è il comportamento "ramdomico" dello script, per cause non ancora identificate, la procedura alcune volte veniva portata a termine, ma nella stragrande maggioranza si piantava ogni volta in punti diversi dello script.
Alcune volte anche nella semplice istruzione di creazione di una tabella.
Ovviamnete anche workbench si collega al db MySQL tramite una connessione VPN SSL (Adito), i file di testo per l'aggiornamento e il file di script sql si trovano sulla macchina locale.
Questa volta trovandomi molto vicino alla soluzione del problema ho chiesto maggior supporto al gestore del server, ma anche lui non mi ha saputo dire nulla per risolvere il problema, una cosa riscontrata è che le tabelle coinvolte nell'aggiornamento si bloccavano durante il tentativo di aggiornamento e allo scadere dei 600 secondi di time out di MySQL, rimanevano "loccate" impedendo qualsiasi intervento su di esse, unica soluzione per sbloccare era riavviare il db.

Ora sto tentando la strada numero 4, un tentativo di aggiornamento tramite javascript, mentre di MySQl, PHP e VBA ho qualche nozione di base, di javascript non so assolutamente nulla, non so neppure da che parte cominciare a scrivere un pezzo di codice, ma ci sto provando lo stesso.
La scelta è ricaduta su questo sistema, primo perché le ho provate tante, una in più non guasta e poi perchè da quello che capito, poco in realtà, posso connettermi al db in modo diretto senza passare da php, il sistema javascript indipendente o credo dalla pagina web e spero in questo modo di bypassare i problemi di time out, se così non fosse cortesemente avvertitemi che abbandono e provo altre strade... comunque
Sempre da access recupero i file e li elaboro come nel tentativo precedente in formato testo, li ho elaborati in php e creato un array che vorrei passare a javascript per poi importarlo nel database e qui ho incontrato il primo problema non riesco a passargli l'informazione.
In php ho creato l'array in questo modo:

PHP:
	$Fr = fopen($Path.$File,"r"); // apro il file txt da elaborare in lettura dove in $Path risiede il percorso e in $File il nome del file
        $Array_Nsis_1_PHP = array();
	if ($Fr) { // verifico la corretta apertura
		while (!feof($Fr)) {  // leggo il file fino alla fine
			$lines[] = fgets($Fr); // inserisco le righe del file in un array 
		} 
		fclose($Fr); // chiudo il file
		$Rows = 0;  // azzeramento contatore riga per contare i campi dell'array da passare a javascript
		foreach($lines as $line) { // definisco un ciclo per il numero delle righe e ne estrapolo il contenuto
		       if ($Rows != 0){ // salta l'inestazione
                                $ArrayRow = explode($Sep,$line); // converto la righa in array usando il separatore $Sep per delimitare i dati
				$SARF_ZONA_ID = $ArrayRow[0]; // int(1)
				$SARF_CODICE = $ArrayRow[1]; // int(4)
                                //...
                                //...
				//elaboro ogni campo estratto dall'array
                               // ...
                               // ...
                               $FI_ROLLOUT_STATUS = $ArrayRow[253];  // varchar(255)
				if ($ArrayRow[253] == "0"){ // sostituisco il valore 0 con -
				        $FI_ROLLOUT_STATUS = "-";
				}
                               // definisco in nuovo array da passare a javascript
                               $Array_Nsis_1_PHP[$Rows][1] = $FI;
			       $Array_Nsis_1_PHP[$Rows][2] = $SHORT_CODE;
                                ...
                                ...
                                ...
                                ...
                               $Array_Nsis_1_PHP[$Rows][36] = $FI_ROLLOUT_STATUS;
                              // da come si può vedere dai contatori dopo le opportune modifiche sono passato, per questo file, da 253 campi o colonne a 36
                              // mentre le righe o records sono 47200
                      }
		      $Rows ++;
		}
	}else{
		$msg = "Read file ".$File." impossible!"; // messaggio di errore
		header("Location: searchadmin.php?msg=".$msg); // ricarico la pagina iniziale visualizzando il messaggio di errore
	}

Dopo svariate modifiche a pezzi di codice non funzionante ho ridotto l'Array multidimensionale a un array semplice e sto tentando di lavorare su questo per poi modificarlo in modo che possa passare l'intero array multidimensionale, perciò l'ultima parte del codice php l'ho modificato in questo modo:

PHP:
        $Array_Nsis_1_PHP_prova = array();
	$Array_Nsis_1_PHP_prova[$Rows] = $FI;

andando a riempire l'array con solo un informazione e il codice di javascript è stato così modificato:

Codice:
<script language="javascript"> 

var myJsArray = new Array(); 

<?php for( $i=0; $i < $Array_Nsis_1_PHP_prova.length; $i++) { ?> 

myJsArray[<?php $i; ?>] = "<?php $Array_Nsis_1_PHP_prova[$i]; ?>"; 
document.write(myJsArray);

<?php } ?> 

</script>

ma non funziona, visualizzo una pagina vuota, ho provato ad inserire anche "echo" nella parte php, poiché ho trovato vari esempi dove vengono riportate entrambi le diciture, ma non funziona ugualmente

Codice:
<script language="javascript"> 

var myJsArray = new Array(); 

<?php for( $i=0; $i < $Array_Nsis_1_PHP_prova.length; $i++) { ?> 

myJsArray[<?php echio $i; ?>] = "<?php echo $Array_Nsis_1_PHP_prova[$i]; ?>"; 
document.write(myJsArray);

<?php } ?> 

</script>

Dove sbaglio? Qualcuno potrebbe aiutarmi?

Si accettano anche suggerimenti per modificare drasticamente la procedura di aggiornamento.

Grazie mille
 
Discussioni simili
Autore Titolo Forum Risposte Data
A SUGAR CRM - problema import contatti da excel Database 0
A problema con Import File text Database 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 1
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6

Discussioni simili