Ho abbassato il limite fino a 50 record per volta ma l'errore è sempre lo stesso.
Effettivamente con il truncate sembra che vada meglio.
Questo processo è schedulato in un cron che parte ogni ora.
Da quando ho seguito il tuo suggerimento ad ora, il risultato è di 11 success su 21 esecuzioni.
L'errore che trovo nell'error_log è sempre lo stesso:
codice:

PHP Warning: Error while sending QUERY packet. ...
Sospetto che il problema sia questo max_allowed_packet = 64M
Il mio progetto è su un hosting condiviso e non vorrei che quando fallisce è perché altri siti sullo stesso server in quel momento stanno occupando parecchie risorse mysql.
Non lo so ... la mia è solo un'ipotesi; anche perché se il problema fosse nel mio script, i fallimenti sarebbero dovuti essere 21 su 21

Che ne pensi?