php - for - variable block twig
Windows 7 php+Symfony2 terriblemente lento (10)
Creo que tienes un problema con el mecanismo de caché. compruebe el directorio de la aplicación / caché. tiene que haber una carpeta llamada dev. si no existe o si está vacío verifique los permisos de la carpeta. cuando elimino los directorios dev y prod en el directorio app / cache, toma 18 segundos cargar la página, pero luego solo lleva 500 ms.
Este es un problema que he estado teniendo durante mucho tiempo. Quiero ejecutar aplicaciones PHP en mi computadora con Windows y tiene un tiempo de carga terriblemente alto, alrededor de 10-25 segundos. He intentado muchas cosas:
- Primero probé una instalación simple de XAMPP
- Leí que WAMP podría ser más rápido, así que probé WAMP también. Me dio los mismos resultados
- Luego instalé un servidor nginx con PHP, pero tampoco ayudó
- Finalmente, instalé Ubuntu 11.10 en VirtualBox y compartí mis archivos de Windows que contenían mi proyecto, pero el resultado fue aún peor: más de 22 segundos cada vez.
ACTUALIZACIÓN : incluso he probado APC - mejoró un poco, pero aún 6-8 segundos / página
Cargué mis archivos en un servidor Linux (alojamiento compartido), en el que se ejecuta en alrededor de 300-500 ms. En la instalación de XAMPP intenté ejecutar otras aplicaciones (es decir, no Symfony2) también (por ejemplo, phpmyadmin), que también fueron más lentas que en el alojamiento compartido, pero no extremadamente lentas, con un tiempo de carga de 2-3 segundos. Hasta que cambie a Linux como el sistema operativo principal, ¿cómo podría mejorar el rendimiento? Tengo una computadora portátil con CPU i7, 4 GB de RAM, 5400 RPM HDD, Win7 x64.
¡Gracias por tu ayuda!
ACTUALIZACIÓN2: Por alguna misteriosa razón, mi enrutamiento Symfony no funcionó con fcgid (me dio un error 404 para todo), así que volví para usar PHP como módulo. Ahora, se ha convertido en el peor de todos (peor de lo que solía ser un módulo): modo de aplicación de 20 a 25 segundos, y en modo de desarrollo, más de 30 segundos cada vez, así que recibo un error de tiempo de espera, y es lo mismo o sin APC habilitado
Here puedes ver este error. Esto es reproducible: cada vez que alcanza un punto de ejecución diferente dentro de 30 segundos:
El tiempo de carga de la página depende del tiempo de carga de CSS + JS +. Tuve el mismo problema en CakePHP y resolví el problema usando mod_expires
en htaccess.
¿Has probado "ExpiresByType" en tu archivo htaccess de servidor para CSS, JS e imágenes? Mira this página.
Hace algunos años tuve el mismo problema. ¿Qué software antivirus corres en segundo plano? Intente desactivarlo para propósitos de desarrollo o cámbielo. También podrían ser algunos servicios de indexación ejecutándose en segundo plano. Symfony 2 consta de> 15000 archivos con proveedores :) También intente hacerlo de la manera clásica reinstalando Windows desde cero. Mis sitios generalmente toman de 100 a 500 ms y mi computadora portátil es más lenta que la suya. (Intel C2D P8600)
Mis páginas tardaron 20 segundos en ejecutarse. Instalé cgi rápido, aumento de los límites de memoria, todo, no funcionaba. Luego comenzó a mirar la línea de tiempo y notó que el módulo de firewall Symfony ocupaba la mayor parte del tiempo. Resulta que tener "localhost" en mi config para doctrina es lo que estaba causando problemas. Cambiarlo a 127.0.0.1 solucionó el problema. No estoy seguro de por qué, pero se describe aquí:
http://12wiki.blogspot.ca/2012/11/why-does-symfony-2-firewall-take-so.html
Solo una conjetura (y probablemente no la correcta), pero podría estar relacionada con MySQL. Al ver cómo mencionaste PhpMyAdmin y Symfony 2 como aplicaciones PHP que probaste, ambas dependen de MySQL (suponiendo que tienes MySQL configurado en Symfony 2). No mencionaste esto en tu publicación, pero en tu configuración de VirtualBox, ¿dejaste que el script que se ejecuta en Ubuntu se conectara al servidor MySQL en tu máquina host de Windows?
Puede consultar PHP Benchmark para algunos scripts de prueba de rendimiento, y ver si estos scripts funcionan mejor en el tiempo.
Otra cosa que podría intentar es usar Xdebug y ver si encuentra (a) cierta (s) función (es) que están ocupando demasiado tiempo.
Definitivamente voy a mantener esta pregunta como favorita, porque tengo mucha curiosidad para ver lo que era ahora :) ¡buena suerte!
Tengo exactamente el mismo problema. Establecer lo siguiente en php.ini aumentó el rendimiento para mí de ~ 800 ms a ~ 300 ms:
php.ini:
realpath_cache_size = 2M
Todavía no los ~ 100ms que obtengo de una máquina Unix, pero hacen una diferencia al menos
Tuve un problema similar con Symfony 1 por un tiempo en XP y Server 2003. La solución fue instalar un acelerador de PHP (eAccelerator para nosotros, APC podría ser una mejor apuesta estos días) más FastCGI / fcgid.
Adición: han pasado años desde que utilicé Apache en Windows. En general, he sido de la opinión de que su rendimiento ha ido mejorando constantemente, en lugar de empeorar; sin embargo, como con las configuraciones más inusuales, YMMV. Según mi comentario anterior, le recomiendo que haga su pregunta en Apache Lounge , donde anteriormente recibí excelentes consejos de expertos.
Si la memoria funciona correctamente, pueden ofrecerle un binario de Apache gratuito compilado con mejores herramientas que el estándar ofrecido en el sitio web de Apache.
Verifique la memoria de acceso aleatorio de su computadora, la memoria RAM mediante http://oca.microsoft.com/en/windiag.asp o ejecute la aplicación de prueba de memoria que se incluye con la opción de arranque del CD de Ubuntu.
En ambos casos, elija lo que se conoce como prueba adicional o profunda, no recuerdo exactamente. Sin embargo, elija la prueba con más tiempo este tipo de pruebas no tiene fin, solo espere hasta que la prueba termine en dos fases y cualquier problema con su RAM, comúnmente, se muestra.
Además, verifique su disco duro con cualquier medio de comprobación. después de eso intenta realizar la desfragmentación del disco
Mordí, tu problema es un problema relacionado con el hardware.
Wow, después de probar muchas cosas diferentes, finalmente logré pasar de un tiempo de ejecución de 15 segundos a un tiempo de ejecución de 3 segundos en Windows 7 con Wamp.
Cómo instalar la extensión wincache: http://us2.php.net/manual/en/wincache.installation.php
Dónde descargar el wincache dll: http://sourceforge.net/projects/wincache/
Mi configuración de php.ini cambia:
[PHP]
realpath_cache_size = 2M
extension=php_wincache.dll
; XDEBUG Extension
;zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"
;
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = Off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "C:/Net Generation/wamp/tmp"
xdebug.show_local_vars=0
xdebug.max_nesting_level=200
[opcache]
zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/ext/php_opcache.dll"
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
Actualizar:
Desde PHP 5.5 ahora ha integrado PHP OPCache, esto acelera el tiempo de ejecución. En mi configuración, una solicitud completa con acceso a la base de datos ahora requiere 180 ms.
Pasos:
- Actualiza a la última versión de php
- Habilitar OPCache
- Deshabilitar xdebug
- Establezca realpath_cache_size = 2M como se menciona DemonTPx
Configuración de php.ini :
realpath_cache_size = 2M
[XDebug]
xdebug.profiler_enable = 0
xdebug.remote_enable = 0
[opcache]
zend_extension = "C:/xampp18/php/ext/php_opcache.dll"
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
¿Por qué Windows es más lento que Unix?
Como se discutió here , PHP es muy lento en file_exists y filemtime () en Windows. ya que Symfony2 está usando estas funciones en modo dev mucho. no obtendremos menos de 700ms (en <= 5.4) en Windows. PHP 5.5 ahora permite 180ms.
Una solución podría ser WinCache que fue desarrollada por Microsoft para resolver este problema en IIS. Pero como solo funciona en varias versiones de Windows y solo con IIS, no es una solución para mí.
Alternativa
También una buena solución que puedo recomendar es tener una máquina virtual Linux en Virtualbox. Es fácil de configurar y se parece más al entorno de producción.