Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

154
Views
El adaptador JsPush de Zend Framework solo actualiza el progreso una vez que finaliza el script PHP

Desde que cambiamos un proyecto de PHP 5 a 7.4, está sucediendo algo extraño, aunque dudo que sea algo de PHP, pero escúchame primero.

El proyecto HTML/PHP utiliza la clase Zend_ProgressBar_Adapter_JsPush de Zend Framework.

Hay un botón HTML en la pantalla. Una vez que se hace clic, se ejecuta un script PHP en segundo plano y se llama al método de update de la clase Zend_ProgressBar . Después de cada paso que hace/finaliza el script PHP, el valor aumenta en +20, hasta llegar a 100.

También hay una tabla HTML. La segunda columna muestra un ícono de carga antes de que ingresen los resultados de cada paso. Hay 5 filas en esa tabla, por lo que una fila para cada paso.

Ahora, esta es la situación: durante los tiempos de PHP5 cuando se ejecutaba el script PHP, el usuario podía ver qué paso había alcanzado/finalizado el script PHP hasta el momento, pero ahora con PHP7.4 en uso, TODOS los campos se actualizan una vez que PHP el guión está terminado. Se muestran correctamente, pero el problema es que ya no refresca paso a paso.

Es como si todo se pusiera en cola en segundo plano o algo así, y JavaScript no tiene la oportunidad de actualizar ningún campo "en vivo", por lo que lo hace al final del script PHP.

No tengo idea de cuál es la razón. Incluso intenté agregar sleep(5) entre estos pasos y vi que funcionaba. Pero, ¿por qué dejar que el usuario espere 5 veces 5 segundos si podría haber una mejor solución?

Aquí está la (versión ligera) del código PHP:

 $adapter = new Zend_ProgressBar_Adapter_JsPush(); $adapter->setUpdateMethodName('Zend_ProgressBar_Update'); $adapter->setFinishMethodName('Zend_ProgressBar_Finish'); $progress = new Zend_ProgressBar($adapter, 0, 100); $result = ""; $progress->update(0, $result); // Do something... $progress->update(20, $result); // [...] $progress->update(100, $result);

Métodos JavaScript:

 function Zend_ProgressBar_Update(data) { switch (data.current) { case 0: /* Reset progress table */ /* [...] */ break; case 20: /* Fill first row column of table with data.text */ /* [...] */ break; /* [...] */ case 100: /* Fill final row column of table with data.text */ /* [...] */ break; default: //alert('default'); break; } function Zend_ProgressBar_Finish() { alert('Finished'); }
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!