Hola amigos, buen inicio de semana para todos con esta noticia.
Lo que yo hago es tener un archivo que recibe todas las notificaciones y las mando directamente a una Queue que tengo con RabbitMQ, y alla ya se hace el "proceso lento", y pues si llegan 700 notificaciones por segundo (que me ha pasado bastante) el servidor no se satura ni la base de datos, porque al enviar la notificacion al Queue, el Queue se encarga de distribuir correctamente los procesos y no se satura, entonces no va a procesar las 700 notificaciones en ese segundo, si no que un poco despues, que vaya, no es nada "de riesgo" que las procese 1 minuto despues.
Basicamente recibo, reenvio y proceso.
Anteriormente si tenia todo el proceso directamente al recibir las notificaciones, pero si es un mundo de tiempo el que se lleva, y un dia decidi renovar ese sistema de procesar notificaciones, que me ha caido como anillo al dedo ahorita.
Igualmente estaba leyendo en stackoverflow que podias enviar el status 200 antes de terminar el script, asi le notifican a ML que todo bien, pero siguen procesando la notificacion, una manera "sucia" pero efectiva jajaja.
session_write_close(); //close the session
fastcgi_finish_request(); //this returns 200 to the user, and processing continues
En caso de que usen nginx.
Saludos