On 12/31/2019 at 8:35 AM, serpega said:Hola @Luisejo
Coméntale a un cliente, que cada 5 minutos, aleatoriamente le va a tardar 5 minutos en guardar un producto, en ver un pedido o cualquier otra pantalla del admin.
Eso no está bien, las tareas de backend no se las ha de comer el usuario de la web, se hacen por detrás sin intervención ninguna. Al menos debería dar opción de configurar un cron.
Supongo que en una tienda con pocos pedidos pendientes no pasa nada, pero si hay mucho pedido es imposible trabajar.
Y sí, te lo confirmo, en el caso de mi cliente son 236 llamadas al SOAP al api de MRW (supongo que una por cliente). He tenido que pasarle un profiler de sistema para averiguar qué módulo era el que se comía todo el tiempo, pues el cliente estaba hasta el gorro.
Si al alguien le vale, he modificado el módulo de forma rápida para que sólo en el dashboard del admin llame a MRW
Fichero: modules/mrwtracking/mrwtracking.php Función: hookBackOfficeFooter
public function hookBackOfficeFooter($params) { if(isset($_GET['controller'])){ if($_GET['controller']!='AdminDashboard') return; }
Efectivamente, lo normal sería en este caso programar un cron que llame a un script (como hacen cientos de módulos) para que realice la tarea que hoy se hace en el hookBackofficeFooter. Al ejecutarse en el mismo hilo sin ningún timeout razonable (salvo el timeout del hosting), te bloquea el backoffice. Si se ejecuta en el cron, si el WS no funciona, acabará dando un timeout (típicamente a los 5 minutos, pero es configurable) pero no afectará en nada ya que se ejecuta en su propio hilo.
Porque no lo hacen? Yo creo que hay muchos hostings que incluso no ofrecen la posibilidad de programar crons (o hay que pagar un extra) y MRW no quiere una capa extra de problemas de configuración (suelen dar soporte) porque la mayoría de gente no sabe como configurarlo en el panel de control que tenga.
A parte que estar pululando por el backoffice no es la mejor manera de controlar que se ejecuten estas cosas.. si no entras al backoffice no se ejecuta..