HTML.it forum
HTML.it HTML.it forum Archive > Lato server > PHP
 

Interagire con as400

 
ciro78
Salve ragazzi,
alla mia azienda è stato chiesto di realizzare un e-commerce che si basi sui
dati di un database as 400.

Siccome di as400 sono a digiuno mi servirebbe qualche guida / manuale / sito a
cui attingere informazioni per risolvere questa cosa.

Leggendo qua e la in rete ho letto che molti estraggono i dati e aggiornano un
database mysql sul quale lavora poi php

altri dicono che è possibile estrarre i dati direttamente dal database as400 e
visualizzarli sul sito

attendo vostri consigli :)
daniele_dll
Beh, si, è possibile attingere dati e visualizzarli direttamente sul sito, ma il
connettore ODBC è abbastanza lento se poi a questo aggiungi che dovresti usare
una VPN tra il dedicato/virtuale dell'ecommerce e il server as400 direi che la
cosa diventerebbe ESTREMAMENTE lenta.

Il mio consiglio è quello di farti uno script che si occupi di "ricopiare" le
informazioni dall'as400 a mysql, magari 2/3 volte al giorno, vedi tu (se lo
script è scritto bene e sfrutta le funzionalità di mysql le performance sono
MOLTO elevate) cosi da poter attingere.

Quasi sicuramente, ad ogni aggiornamento, ti toccherà svuotare le tabelle di
destinazione per ri-riempirle quindi poi i dati aggiuntivi (che so foto,
descrizioni e via dicendo) li devi mettere in una tabella a parte legata alla
principale tramite un codice identificativo
ciro78
ok.

quindi la soluzione è estrarre i dati e renderli compatibile con mysql.

ma come si estraggono i dati da as400?

inoltre in che modo è possibile, qualora il cliente lo preferisca, farlo
direttamente?

ci sono manuali guide studi ??
 
daniele_dll
ascoltami, farlo direttamente non è una soluzione fattibile per un sito web,
indipendentemente da quello che vuole il cliente ... vorrebbe dire che a ogni
apertura di pagina dovrebbe partire una connessione tramite una vpn verso
l'as400 utilizzando il client odbc (quello db2 costa un pozzo e non so se
funziona correttamente con le varie release dell'as400) il che vuol dire che una
pagina, per essere visualizzata, con query semplici, avrebbe bisogno dai 15 ai
20 secondi (il tutto ammesso che la rete non sia carica) senza considerare poi
che se per qualsiasi motivo va già la loro adsl il sito smetterebbe di
funzionare

dai un occhio qua
http://pinguinoblu.blogspot.com/200...r /> on-php-22/
 
ciro78
ciao daniele,
grazie dei link.

in entrambi vedo odbc connect..quindi sono link che rientrano nella categoria
accesso diretto ad as400?

se avevo inteso era una soluzione non adatta.

on ogni caso

nel testo viene riportato

Citazione:

Sulla nostra fida Debian installiamo i prerequisiti:


in questo caso intende la macchina dove risiede il web server? ergo dove
risiederà il sitarello in php???
 
daniele_dll
ODBC non fa nessun accesso diretto, utilizza il connettore della IBM per odbc ma
è lento (certo, in locale non te ne accorgi ma su internet, soprattutto tramite
una vpn, decisamente si)

Si, ovviamente quelle operazioni devono essere svolte sulla macchina che
effettuerà l'accesso ai dati presenti su db2, indipendentemente che si tratti
del server del sito o di una macchina che si limiterà a copiare il software.

L'installare o meno php dipende da te :)
 
ciro78
aspetta un attimino

io mi trovo nella seguente situazione

- azienda con as400
- azienda che vuole il sito( che finirà su una macchina che chiamo server)

io normalemnte faccio il sito e lo metto sulla macchina che ho chiamato server
ora come funziona il collegamento alla macchina che ha as400?

se ho ben capito debbo installare quei software sulla macchina server?
 
daniele_dll
ti ripeto ... ti sconsiglio la strada di collegare direttamente il sito web al
server as400 ( :stordita: ) però, se li vuoi collegare direttamente il tutto lo
devi installare sul server che gestirà il sito web.

la soluzione, però, più conveniente è sicuramente quella di un software che
travasi i dati periodicamente sul sito online cosi il sito web accede
direttamente a se stesso e legge i dati. per quest'ultima soluzione non c'è
bisogno di un server fatto ad hoc ovviamente ma basta benissimo un pc qualsiasi
o volendo anche l'as400 stesso (c'è php per l'as400 con su odbc e credo il
connettore ibmdb2 che puoi usare direttamente al posto di odbc) ... si imposta
un cronjob che richiama uno script php via console e via ^^
 
ciro78
ok adottiamo la seconda soluzione :)

di che genere di software parliamo? sono forniti stesso dalla ibm?

scusa se ti rompo :) ma della cosa sono a digiuno :)
 
daniele_dll
beh, i software come php, apache e simili si, il software che ti "clona" i dati
di potrebbe usare un mix di software per leggere i dati e poi scrivere un
programmino che li reinserisca su mysql ma sarebbe troppo casinistica la cosa

devi semplicemente scrivere un software che si connetta al database dell'as400,
legga i dati tramite una normale select, effettui un truncate delle tabelle di
destinazione ed infine reinserisca i dati appena letti sul database mysql remoto
(ovviamente la soluzione non è quella di fare un insert per volta ma di
raggruppare 500/1000 insert per tabella e lanciarli in un colpo o si fa notte
[su 2 milioni e mezzo di record si passa da oltre le due ore e mezza a meno di
15 minuti, anche se in realtà avevo adottato anche altre ottimizzazioni e la
sorgente era informix e mysql era in locale, ma comunque la differenza nei tempi
di esecuzione è abnorme])
 
ciro78
allora

macchina a: as 400
macchina b: server dove risiede il sito

dove creo il software? lo posso fare in php?

:)
 
daniele_dll
... ciro, te l'ho già scritto 2 volte, rileggi con attenzione!

devi solo scrivere un programma che copia i dati da una parte e li mette
nell'altra ... come lo vuoi/puoi fare è indifferente, basta che faccia il suo
lavoro, no?

Detto questo ... deve stare in rete locale con l'as400 oppure essere eseguito
direttamente dall'as400. Ovviamente, dato che sai programmare in PHP penso ti
venga più comodo scriverlo direttamente in php e se non si vuole acquistare
un'altra macchina, per l'as400 ci stanno i pacchetti php che, una volta
installati, ti permettono di usare sia la CLI sia l'interfacciamento con il
webserver.

Ovviamente il software non ha bisogno del webserver, basta la cli, ma non cambia
ASSOLUTAMENTE nulla, se non che negli echo/printf non puoi usare HTML per
l'output e per separare le righe devi usare \n

fine ^^
 
ciro78
Citazione:
Originariamente inviato da daniele_dll
... ciro, te l'ho già scritto 2 volte, rileggi con attenzione!

devi solo scrivere un programma che copia i dati da una parte e li mette
nell'altra ... come lo vuoi/puoi fare è indifferente, basta che faccia il suo
lavoro, no?

Detto questo ... deve stare in rete locale con l'as400 oppure essere eseguito
direttamente dall'as400. Ovviamente, dato che sai programmare in PHP penso ti
venga più comodo scriverlo direttamente in php e se non si vuole acquistare
un'altra macchina, per l'as400 ci stanno i pacchetti php che, una volta
installati, ti permettono di usare sia la CLI sia l'interfacciamento con il
webserver.

Ovviamente il software non ha bisogno del webserver, basta la cli, ma non cambia
ASSOLUTAMENTE nulla, se non che negli echo/printf non puoi usare HTML per
l'output e per separare le righe devi usare \n

fine ^^


eh eh ...scusami ma in effetti ti sto leggendo nei ritagli di tempo a causa del
tempo tiranno.
ultima domanda....

l'installazione di questi pacchetti comporta qualche rischio per il database
del'as400?
c'è un modo per fare il back up?

cosa intendi per CLI...command line??

mi consigli qualche pacchetto in particolare?

il web server per ricevere i dati da un server esterno(quello del as400) deve
essere configurato?

per automatizzare la cosa io su apache userei il cronotab...ma in questo caso?

grazie per la pazienza e la disponibilità
 
daniele_dll
ecco, stiamo scendendo in un campo a me sconosciuto :stordita:

io non ho mai messo mani su una console AS400 e, per scelta personale, mai ne
mettero :) Scherzi a parte, tutto dipende da com'è configurato l'as400, da che
versione del system c'è su e via dicendo ... ma ovviamente si può mettere su un
programma a parte o ancora si può scrivere uno script che si lancia tramite un
doppio click ... lavorando solo con la cli c'è bisogno esclusivamente di php e
basta

si per CLI intendo da console, tanto l'utente non deve vedere nulla se avviato
automaticamente o al massimo un veloce report se avviato manualmente

"crontab" è un comando che gestisce i "cronjobs" dei servizi che implementano le
funzionalità "cron", ma non è di apache :stordita: ... è della distribuzione e,
preferibilmente per questo tipo di cose, si dovrebbero usare i file presenti in
/etc/cron.[d, daily, hourly, weekly, monthly] cosi da non essere legati ad un
utente specifico ma al sistema

usando la cli non c'è bisogno del webserver (ovviamente se non vuoi usare la cli
c'è bisogno del webserver)
 
ciro78
Citazione:
Originariamente inviato da daniele_dll
ecco, stiamo scendendo in un campo a me sconosciuto :stordita:

io non ho mai messo mani su una console AS400 e, per scelta personale, mai ne
mettero :) Scherzi a parte, tutto dipende da com'è configurato l'as400, da che
versione del system c'è su e via dicendo ... ma ovviamente si può mettere su un
programma a parte o ancora si può scrivere uno script che si lancia tramite un
doppio click ... lavorando solo con la cli c'è bisogno esclusivamente di php e
basta


mmm bella sta cosa che non hai mai visto un as400.....e come le sai queste cose
:d


Citazione:

si per CLI intendo da console, tanto l'utente non deve vedere nulla se avviato
automaticamente o al massimo un veloce report se avviato manualmente


cos'è che esattamente l'utente non vede?

Citazione:

"crontab" è un comando che gestisce i "cronjobs" dei servizi che implementano le
funzionalità "cron", ma non è di apache :stordita: ... è della distribuzione e,
preferibilmente per questo tipo di cose, si dovrebbero usare i file presenti in
/etc/cron.[d, daily, hourly, weekly, monthly] cosi da non essere legati ad un
utente specifico ma al sistema

usando la cli non c'è bisogno del webserver (ovviamente se non vuoi usare la cli
c'è bisogno del webserver)


ma se uso solo la cli...come faccio ?

ad esempio se io uso gli script che mi hai indicato e li metto su una macchina
che è in locale con as400

[code]
seleziono il database as400
leggo
metto i file in un file di testo?
leggo il file e lo mando al mio web server dove risiede il sito???
[code]

tutto cio da linea di comando?
 
ciro78
Citazione:
Originariamente inviato da ciro78
mmm bella sta cosa che non hai mai visto un as400.....e come le sai queste cose
:d




cos'è che esattamente l'utente non vede?



ma se uso solo la cli...come faccio ?

ad esempio se io uso gli script che mi hai indicato e li metto su una macchina
che è in locale con as400

codice:
seleziono il database as400
leggo
metto i file in un file di testo?
leggo il file e lo mando al mio web server dove risiede il sito???


tutto cio da linea di comando?
 
daniele_dll
Citazione:
Originariamente inviato da ciro78
mmm bella sta cosa che non hai mai visto un as400.....e come le sai queste cose
:d


non ho detto di non aver mai visto un AS400, ma solo di non aver mai messo le
mani sulla sua console (pardon, mi sono espresso male probabilmente ...
intendevo shell, fisicamente da shell non ci sono mai entrato, ho lavorato solo
su database da remoto)

Citazione:

cos'è che esattamente l'utente non vede?


...se è un processo automatizzato non c'è output a video :fagiano:

Citazione:

ma se uso solo la cli...come faccio ?

ti ho risposto prima a questa domanda

Citazione:

ad esempio se io uso gli script che mi hai indicato e li metto su una macchina
che è in locale con as400

[code]
seleziono il database as400
leggo
metto i file in un file di testo?
leggo il file e lo mando al mio web server dove risiede il sito???
[code]

tutto cio da linea di comando?

è uno script php, non è da linea di comando ... semplicemente è predisposto per
essere eseguito ANCHE da linea di comando

direi che ti mancano degli elementi essenziali, perché prima di continuare non
ti documenti sull'argomento? :stordita:

PS: non c'è bisogno che metti i dati dell'as400 in un file ti puoi connettere al
mysql del sito web e metterli li dentro ... ho detto che non conviene il
contrario perché se il sito web deve accedere all'as400 a parte la lentezza di
ogni singolo accesso se manca internet in ufficio il sito è fermo
 
ciro78
confermo, come avevo annunciato, di non essere esperto di interfaccia con un
as400. dove trovo un po di documentazione?


per farla breve basta uno script php, dopo aver installato il php su un pc che è
nella rete dell'as400, e farlo eseguire ?

. :D :D

aspetto i link :)
 
ciro78
:ecco:
 
daniele_dll
Citazione:
Originariamente inviato da ciro78
confermo, come avevo annunciato, di non essere esperto di interfaccia con un
as400. dove trovo un po di documentazione?


una ricerchina su google? :stordita:

ma in ogni caso tu non devi mettere le mani direttamente sull'as400, ci pensa
l'azienda che lo ha venduto a fare quello che serve perché sicuramente avranno
anche un contratto di assistenza ... o alternativamente avranno comunque un
sistemista di riferimento che gli baderà alle macchine

Citazione:

per farla breve basta uno script php, dopo aver installato il php su un pc che è
nella rete dell'as400, e farlo eseguire ?


yes ^^
 
ciro78
va bhe come mi pare di capire mi basta configuarare lo script php che mi hai
indicato ad inizio della discussione. ad ogni modo faro una ricerchina .....

anche se a dire il vero non ho trovato molto

almeno al primo tentativo

:dhò:

Trova la soluzione al tuo problema, cerca tra le guide di HTML.it

Loading

Powered by: Search Engine Indexer and vBulletin v2.3.6
Copyright © 2000 - 2002, Jelsoft Enterprises Limited