Cela se produit probablement parce que votre requête CURL prend plus de temps que le délai de connexion mysql
soit 1) définissez un délai d'expiration de la demande pour CURL afin qu'il meure plus tôt en cas d'erreur (CURLOPT_CONNECTTIMEOUT est uniquement pour les connexions - CURLOPT_TIMEOUT est pour la durée totale de la demande et il s'arrêtera si le serveur ne répond pas à temps) 2) allumez le délais d'inactivité mysql pour empêcher le serveur de vous déconnecter pour ne pas envoyer de requêtes
3) détecter l'erreur et se reconnecter automatiquement à mysql
mysql> show variables like "%timeout%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
9 rows in set (0.00 sec)
wait_timeout et interactive_timeout sont les deux qui vous intéressent