IronWoods.es

Desarrollo web

Blog / Laravel / Artisan: clear commands

Después de ciertas acciones en Laravel o si parece que la aplicación no actualiza cambios recién introducidos, usamos diferentes comandos de limpieza de artisan.

  • php artisan cache:clear Limpiar cache
  • php artisan config:clear Limpiar configuración
  • php artisan route:clear Limpiar rutas
  • php artisan view:clear Limpiar vistas
  • php artisan optimize Limpiar cache de rutas, configuración y ficheros
    Configuration cache cleared!
    Configuration cached successfully!
    Route cache cleared!
    Routes cached successfully!
    Files cached successfully!
  • php artisan optimize:clear Limpia todas las caches (vistas, aplicación, rutas, configuración y ficheros):
    Compiled views cleared!
    Application cache cleared!
    Route cache cleared!
    Configuration cache cleared!
    Compiled services and packages files removed!
    Caches cleared successfully!

* Nota: php artisan optimize refresca la cache de rutas y configuración, y cachea ficheros. No podremos usarlo si tenemos closures en las rutas.

Otros comandos de limpieza

Cuando estamos "construyendo" la base de datos, es muy habitual ejecutar continuamente migraciones y seeders, por ejemplo, con:

php artisan migrate:refresh --seed

Sin embargo, ciertos fallos, no permitirán refrescar las migraciones. Deberemos eliminar todas las tablas de la base de datos antes de volver a ejecutar la migración, con el comando:

php artisan db:wipe

Limpieza en producción sin acceso SSH

Cuando no existe la posibilidad de ejecutar comandos artisan en terminal, podemos hacerlo mediante código, por ejemplo:


Artisan::call('cache:clear');

Deberíamos disponer algún mecanismo para ejecutar el script, desde el panel de administración, por ejemplo, un enlace que lleve a la ejecución del comando:


Route::get('clear-all', function()
{
    Artisan::call('optimize:clear');

    return redirect('dashboard')
        ->with(
            'success',
            Artisan::output()
        );
})->middleware([
    'auth',
    'cms-admin-actions'
]);

¡Cuidado con las rutas!

En la documentación de Laravel, desde la versión 5.5 y hasta la versión 7.x, aparece una advertencia con respecto a las rutas con closures, por ejemplo, esta:


Route::get('welcome', function ()
{
    return view('welcome');
});

Se producirá el error:

LogicException

Unable to prepare route [welcome] for serialization. Uses Closure

que hace referencia a la ruta que viene como ejemplo en "routes/web.php", al ejecutar cualquiera de los camandos:

php artisan route:clear

php artisan optimize

.

La ejecución de la "limpieza" de rutas durante el despliegue, permite optimizar la carga de las rutas de la aplicación, muy importante si hay muchas rutas. Estas deberán ser de tipo: FooController@bazMethod.