sql >> Base de Datos >  >> RDS >> PostgreSQL

Al llamar a DB::select, ¿por qué aparece el mensaje La conexión se restableció?

La parte difícil de esto ha sido la obstinada negativa del navegador a revelar cualquier forma de mensaje de error. Cuando eso sucede, me gusta ir a la línea de comandos y probarlo, eliminando así el servidor web como variable.

Por el chat, supimos que la línea de comandos mostraba el error como se esperaba, pero no lo hizo correctamente:se emitió el error y se detuvo el script. Eso es un accidente grave, no atribuible al servidor web.

Con la introducción de \Throwable , los escenarios en los que PHP muere con fuerza son cada vez menos frecuentes. Entonces, en un esfuerzo por recuperar el último aliento de PHP, implementamos una register_shutdown_function que extrajo error_get_last en un esfuerzo por averiguar qué se dijo, si es que se dijo algo, justo antes de explotar.

Esto reveló, brevemente, el mensaje de error en el navegador (esta vez usando un navegador diferente). Sin embargo, esto no fue repetible. La información en este punto fue el almacenamiento en caché:composer dump-autoload solucionado el problema!

Sospecho que lo que pasó es esto:

  • Eloquent lanzó una excepción
  • PHP estaba burbujeando eso a través de las clases de manejo de excepciones de Laravel
  • En algún momento, PHP intentó cargar una clase que no estaba en el cargador automático
  • PHP colapsó con fuerza (este es uno de esos casos en los que PHP 7.0 falla)

Al ejecutar composer dump-autoload , todas las clases "faltantes" se incluyeron en el ámbito del cargador automático y, cuando se volvió a intentar, se produjo la secuencia de código correcta.