Eche un vistazo a este tutorial en transacciones con PDO.
Básicamente, envuelve el código de larga ejecución en:
$dbh->beginTransaction();
...
$dbh->commit();
Y según esta página del documento PDO :
"Cuando finaliza el script o cuando una conexión está a punto de cerrarse, si tiene una transacción pendiente, PDO la revertirá automáticamente".
Por lo tanto, perderá la transacción que estaba pendiente cuando se agotó el tiempo de espera del script.
Pero realmente, deberías rediseñar esto para que no dependa de que el guión se mantenga vivo.