Zend Server for IBMi viene ormai fornito come prodotto pre-installato su ogni nuovo Power System con IBMi OS; ciò significa che ogni programmatore può facilmente cominciare a utilizzare il PHP sul suo AS/400 senza preoccuparsi di installare e configurare software aggiuntivo. Non è detto però che le configurazioni pre-caricate da chi ha installato la macchina siano automaticamente compatibili con le nostre esigenze.
I programmatori che si appassionano di PHP e decidono di volerlo utilizzare per interagire con il DB2 for I, con molta probabilità utilizzeranno l’estensione IBM_DB2 presente di default nello Zend Server for I piuttosto che la PDO_IBM. Si può dire che con qualche “workaround” la IBM_DB2 è ormai completamente compatibile con l’adapter DB2 dello Zend Framework 1 e supporta anche delle funzionalità specifiche per IBM i (naming system, library list, opzioni di commit avanzate etc. per questo vi rimando alla documentazione della funzione db2_connect; consiglio di cercare nella pagina il termine “i5” per trovare le proprietà e le funzioni specifiche per DB2 for I).
Esigenza comune è quella di creare programmi che fanno uso delle transazioni per garantire l’integrità e la consistenza dei dati e problematica altrettanto comune è quella di scoprire dopo tempo che un eventuale db2_rollback presente nel codice non da i risultati attesi.
Questo può succedere poichè, almeno fino alla versione 5.6 dello Zend Server for I, il commitment è “disabilitato” di default e quindi le istruzioni db2_autocommit o db2_rollback vengono ignorate senza dar particolari notifiche.
Per controllare e/o attivare il commitment a livello globale (come nella stra grande maggioranza dei casi, credo, dovrebbe essere!) andate nel pannello di gestione dello Zend Server all’indirizzo:
http://ip_as_400:10088/
loggatevi e posizionatevi nella tab Server Setup e nella sotto tab directives e cercate il gruppo ibm_db2;
verificate che la proprietà ibm_db2.i5_allow_commit sia impostata con il valore allow_commit altrimenti cambiatelo e premete sul pulsante in alto a destra Save Changes.
Infine riavviate il PHP con il pulsante in basso a destra.
Eseguendo di nuovo il vostro script vi accorgerete che tutto funziona correttamente.
Buon PHP su IBM i