2009-03-18 20 views
9

Tengo un comando "generar sitio web", que analiza todas las tablas para volver a publicar un sitio web completo en páginas html corregidas. Ese es un proceso pesado, al menos en mi máquina local (la CPU se eleva). En el servidor de producción, no parece ser un problema hasta ahora, pero me gustaría mantenerlo a prueba en el futuro. Por lo tanto, estoy considerando usar la función php sleep() entre cada paso del script pesado para que el servidor tenga tiempo de "recuperar el aliento" entre los pasos pesados.¿Es una buena idea utilizar la función php sleep() para mantener baja la carga de CPU con un script pesado?

¿Es esa una buena idea o será inútil?

Respuesta

6

Si está ejecutando php5, y está siendo utilizado en modo CGI (en lugar de mod_php), entonces podría considerar usar proc_nice en su lugar.

Esto podría permitir que el comando "generar página web", para usar tanto la CPU como quiera, mientras que nadie más está tratando de usar el sitio.

0

Creo que es una buena idea. Dormir significa una comparación repititiva de garrapatas hasta que se produce un período. La sobrecarga en la CPU en una operación de suspensión debería ser menor.

0

Depende de cuántas veces se le llama a ella y por cuánto tiempo. Necesitará equilibrar su necesidad con una salida rápida frente a un bajo uso de la CPU.

En resumen: sí, ayudará.

+0

se llamará 6 veces, 3 segundos cada una. No necesito salida rápida en absoluto. Estoy pensando en comenzarlo a través de una llamada ajax, y luego tener otra ajaxcall recuperar el estado cada 19 segundos. solo debería decir "archivos html generados" o generar un registro si se produce un error. – pixeline

1

simplemente no haría esto en el servidor de producción, los pasos que han seguido antes:

  1. alquilar un servidor PHP bajo costo - o conseguir una configuración del servidor Dev adecuado que replica la producción

  2. Todos los archivos dinámicos se copian en DEV - que incluso no necesita estar en la producción

  3. Ejecutar el script HTMLizer - sin dormir simplemente quemar a cabo

  4. Validar que la salida y luego RSYNC esto al servidor en vivo - copia de seguridad del directorio en vivo como lo haces por lo que puede caer con seguridad de nuevo

De todos modos, ya Caché/Memcaching llegó hasta la velocidad que no he tenido que Haga esto en absoluto: use Zend Framework y Zend Cache y básicamente tendrá un equivalente dinámico de lo que necesita hacer automáticamente.

+0

el método que propone suena bien. cuidado de elaborar en RSYNC? sobre zen: puedo estar equivocado (no sé zen), pero no puedo usar zend cache porque cargo estos fragmentos html generados a través de ajax a través de un nombre de archivo html fijo. Así que necesito controlar la posición exacta y el nombre de archivo de los archivos html. – pixeline

+0

RSYNC http://samba.anu.edu.au/rsync/ rsync es una utilidad de código abierto que proporciona una transferencia de archivos incremental rápida Zend es un Framework PHP, pero hay muchas clases de almacenamiento en caché, es decir, en PEAR. –

0

Sobre la base de la tarea, no creo que le ayudará.

sueño sería realmente sólo será útil si estuviera bucle y en espera de la entrada del usuario o la señal de disparo continuo.

En este caso, para hacer el trabajo lo antes posible puede también omitir el comando del sueño, reduciendo así el tiempo de trabajo y liberar el tiempo de CPU más rápido para otros procesos.

Algunos de los carteles anteriores puede ser capaz de ayudarle mejor con la optimización del código.

Cuestiones relacionadas