Domanda

Ho degli script PHP CLI che corrono per un lungo periodo (24 ore più) e sebbene facciano regolarmente "commit di cui ho avuto alcuni problemi con le transazioni orfane - possibilmente causate da script che si bloccano.

La mia soluzione è stata quella di creare la transazione come segue - è stato un anno fa che ho studiato questo e non riesci a ricordare le precise ragioni per queste impostazioni ma sembrava risolvere alcuni problemi con il database.

$ dbh= ibase_connect ($ dbhost, $ dbuser, $ dbpass); $ TRANS= IBASE_TRANS (IBASE_WRITE + IBASE_COMMITED + IBASE_REC_VERSION + IBASE_WAIT, $ DBH);

Ora è aggiornato a PHP 5.3.5 e ha scoperto che la linea IBASE_TRANS causa un errore di segmentazione. Nella pagina PHP IBASE_TRANS c'è una nota:

"Il comportamento di questa funzione è stato modificato in PHP 5.0.0. La prima chiamata a ibase_trans () non restituirà la transazione predefinita di una connessione."

Quindi la mia domanda è se posso impostare gli argomenti di transazione per la transazione predefinita ... Domanda secondaria, sia che ti manca interamente il punto nel cercare di farlo comunque!

Grazie

È stato utile?

Soluzione

Non dovresti lavorare con la transazione predefinita.

Definisci la tua transazione come figli:

$T = ibase_trans($params, $database);
.

Dopo aver eseguito la query:

 ibase_query($T, $SQL, $Params)
.

o puoi usare ibase_prepare e ibase_execute.

Dopo di esso, chiama

ibase_commit_ret($T); // this mentain transaction active
.

o

ibase_commit($T) // this commit work close transaction
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top