BL, es lo mismo. En el entorno "server side", el hecho de que la máquina que alberga el código php sea la tuya propia (localhost) o un servidor web remoto a 1000 Km. de distancia, es irrelevante.
Lo que de verdad importa es que el código PHP se ejecuta en server side por un proceso (digamos, el proceso servidor web) que nada tiene que ver con el proceso client-side que inició la petición (digamos, el proceso navegador web). Esa, y no otra, es la razón por la que tu código sigue ejecutándose en un "supuesto" segundo plano, aun cuando has cerrado el navegador mediante el cual lo lanzastes.
El hecho de que ambos programas (navegador y servidor web) residan en la misma máquina, es puramente anecdótico. Lo que importa es la separación entre procesos, que es total.
Abres tu navegador, lanzas la petición, y el servidor web comienza a liquidar tu php. Esta es la parte crítica que hay que entender para ver cómo funciona este asunto: "
el servidor web comienza a liquidar", es decir, no es tu navegador el que ejecuta el php, sino el proceso servidor web. Ahora verás claro por qué sigue ejecutándose el código cuando cierras el navegador... y es porque el servidor web sigue perfectamente en pie y activo, ejecutando el php que le fue solicitado.
Tienes razón cuando dices que seguramente no es ésta la forma correcta de abordar este problema; estás lanzando un código y perdiendo el control sobre él (detach); esta aproximación te va a dar bastantes dolores de cabeza.
Como mal menor, y ya que estás en local con tu propia máquina, te recomendaría que al menos te olvidases del navegador y ejecutases tu PHP directamente con el intérprete de línea de comandos (ejemplo, php -i programa_de_bl.php).
El modificador -i es ejecución interactiva; esto te acercará más a lo que tú estás buscando, que es un entorno más "tradicional" en el que lo que yo ejecuto pasa a primer plano, y cuando se devuelve el control de la shell al usuario, es sólo porque la ejecución ha terminado realmente.
Tienes que poner atención en entender la sutileza de la diferenciación entre ejecuciones server-side y client-side; ahí reside todo el "misterio", que ya verás con el tiempo y la práctica como no es tal.
Gracias por contestar banana, verás, el caso es que no estoy haciendo nada en remoto, estoy ejecutando el php directamente en el navegador del servidor, por eso no comprendo que siga ejecutándose y haciendo inserts en la base de datos una vez cerrado el navegador y limpiada la caché.
Ya sé que php no es para eso y que es algo raro hacerlo así, pero en teoría debería funcionar, de hecho funciona, el problema viene porque a veces al ejecutarlo en el navegador no me saca ni salida por pantalla ni nada, se queda el navegador en blanco pero el s-c-r-i-p-t funciona e inserta en la base de datos pero ya fuera de control, es decir, entra en ese bucle del que no puedo sacarlo ni cerrando navegador ni nada.