Gestione degli errori del server / dati del database durante l'elaborazione delle richieste dei client

0

Supponiamo che il mio endpoint PHP del server segua qualcosa del tipo seguente:

  1. Il client invia la richiesta al server.
  2. Il server aggiorna un record
  3. Il server potrebbe eseguire qualche elaborazione PHP ...
  4. Gli aggiornamenti del server registrano di nuovo

Cosa fare se il server si blocca mentre si esegue uno dei comandi SQL (2 o 4) o durante 3.

È solo un caso che ho bisogno di codificare in modo difensivo, assicurandomi di essere a conoscenza delle conseguenze di ogni possibile risultato di un crash in aree critiche del codice, cioè di eseguire una sorta di analisi di crash per determinare i risultati peggiori e assicurati che il mio flusso di lavoro sia in grado di gestire ogni caso.

O c'è qualche altro meccanismo che posso usare per aiutare con questi casi?

    
posta Antinous 05.06.2018 - 19:00
fonte

1 risposta

2

Dato il suggerimento nei commenti, sono stato in grado di discernere la giusta linea d'azione. Passando dal motore di database SQL MyISAM al motore di database InnoDB, posso utilizzare le transazioni per evitare di introdurre errori nel mio database:

START TRANSACTION
INSERT, UPDATE, ETC...
COMMIT

Il motore InnoDB non apporterà nessuna modifica finché non verrà raggiunto il comando commit, quindi se qualcosa dovesse andare storto prima di quella linea, il database non ne risentirebbe.

Inoltre, secondo l'eccellente W3Resources introduzione sulle transazioni,

MySQL (here we maintain version 5.6) supports local transactions (within a given client session)

quindi sembrerebbe che una singola connessione PHP SQL supporti il modello di transazione, presumibilmente con la possibilità di eseguire l'elaborazione intermittente di PHP, se necessario, tra query SQL, e infatti l'ho confermata ieri sera.

    
risposta data 05.06.2018 - 23:52
fonte

Leggi altre domande sui tag