Usamos el excelente módulo uRapidFlow de Unirgy, pero nos hemos topado con un poco de molestia. Cuando ejecutas uno de sus perfiles, llaman session_write_close
. El problema con esto es que significa que si deseamos ejecutar un proceso desde un controlador adminhtml, no podemos establecer un mensaje flash de sesión para informar al usuario del éxito o de las excepciones detectadas.
¿Es posible reiniciar la sesión una vez que se completa el proceso para agregar un mensaje de sesión?
Inicialmente no estaba seguro de si era posible reiniciar una sesión en PHP, pero la prueba de concepto PHP funciona:
session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';
// start running profile
session_write_close();
// after running profile
session_start();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';
Sin embargo, no he podido configurar correctamente un mensaje flash en la sesión adminhtml. Pensé que podría llamar a algo como:
Mage::getSingleton('adminhtml/session')
->init('core', 'adminhtml')
->addSuccess('Whoop');
Pero esto no parece funcionar.
Respuestas:
Esto debería funcionar:
La sesión no se pierde después
session_write_close()
, si desea volver a escribir en la sesión, deberá volver a abrirla. Prueba de concepto:fuente
session_write_close
).unset($_SESSION)
. Después de hacer esto,init
volverá a cargar la sesión correctamente.init
llamada al método (bueno, en elstart
que se llama porinit
). Aparte de eso, debería funcionar.