PHP performance. HHVM. PHP5.5 OPCACHE

Acabo de actualizar a Ubuntu 13.10 desde la 13.04 y luego de verificar algunas cosas el sistema reporta :

Apache Version Apache/2.4.6 (Ubuntu)
PHP Version 5.5.3-1ubuntu2
Registered Stream Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Y luego de dudar sobre las dependencias de HHVM, instalo la version 2.2.0 y la configuro en el puero 9090

Tengo dos script, el primero hace uso de intensivo de sort() y arsort() ( ej test-fast.php ) link https://gist.github.com/puentesdiaz/7086714.

Y el segundo es una funcion finobacci ( ej test-fast-2.php ) link https://gist.github.com/puentesdiaz/7163344 …

(ver mas info en http://alexfu.it/2013/10/22/symfony-benchmark-on-hhvm.html )

Cuando la URL tenga el puerto 9090, sabran que estamos empleando HHVM

****************************************************
$ ab -n 100 -c 10 http://localhost/labs/test-fast.php
****************************************************

Server Software: Apache/2.4.6

Server Hostname: localhost
Server Port: 80

Document Path: /labs/test-fast.php
Document Length: 134 bytes

Concurrency Level: 10
Time taken for tests: 168.649 seconds
Complete requests: 100
Failed requests: 24
(Connect: 0, Receive: 0, Length: 24, Exceptions: 0)
Write errors: 0
Total transferred: 34271 bytes
HTML transferred: 13371 bytes
Requests per second: 0.59 [#/sec] (mean)
Time per request: 16864.882 [ms] (mean)
Time per request: 1686.488 [ms] (mean, across all concurrent requests)
Transfer rate: 0.20 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.6 0 8
Processing: 12895 16644 1363.9 16888 19412
Waiting: 12895 16643 1364.4 16888 19412
Total: 12896 16644 1363.6 16888 19412

Percentage of the requests served within a certain time (ms)
50% 16888
66% 17270
75% 17673
80% 17756
90% 18231
95% 18478
98% 19289
99% 19412
100% 19412 (longest request)

****************************************************
$ ab -n 100 -c 10 http://localhost:9090/test-fast.php
****************************************************

Server Software:
Server Hostname: localhost
Server Port: 9090

Document Path: /test-fast.php
Document Length: 135 bytes

Concurrency Level: 10
Time taken for tests: 4.422 seconds
Complete requests: 100
Failed requests: 24
(Connect: 0, Receive: 0, Length: 24, Exceptions: 0)
Write errors: 0
Total transferred: 23468 bytes
HTML transferred: 13468 bytes
Requests per second: 22.62 [#/sec] (mean)
Time per request: 442.182 [ms] (mean)
Time per request: 44.218 [ms] (mean, across all concurrent requests)
Transfer rate: 5.18 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 309 429 64.7 432 601
Waiting: 309 429 64.7 432 601
Total: 309 429 64.7 432 601

Percentage of the requests served within a certain time (ms)
50% 432
66% 449
75% 481
80% 493
90% 520
95% 529
98% 584
99% 601
100% 601 (longest request)

=========================================

Ahora pasemos a la función fibonacci:

*****************************************************
ab -n 10 -c 10 http://localhost/labs/test-fast-2.php
*****************************************************

Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80

Document Path: /labs/test-fast-2.php
Document Length: 143 bytes

Concurrency Level: 10
Time taken for tests: 12.859 seconds
Complete requests: 10
Failed requests: 1
(Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Write errors: 0
Total transferred: 3519 bytes
HTML transferred: 1429 bytes
Requests per second: 0.78 [#/sec] (mean)
Time per request: 12859.493 [ms] (mean)
Time per request: 1285.949 [ms] (mean, across all concurrent requests)
Transfer rate: 0.27 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 11692 12461 346.8 12597 12859
Waiting: 11691 12461 346.8 12597 12859
Total: 11692 12461 346.8 12597 12859

Percentage of the requests served within a certain time (ms)
50% 12597
66% 12603
75% 12668
80% 12780
90% 12859
95% 12859
98% 12859
99% 12859
100% 12859 (longest request)

*****************************************************
ab -n 10 -c 10 http://localhost:9090/test-fast-2.php
*****************************************************

Server Software:
Server Hostname: localhost
Server Port: 9090

Document Path: /test-fast-2.php
Document Length: 145 bytes

Concurrency Level: 10
Time taken for tests: 0.142 seconds
Complete requests: 10
Failed requests: 5
(Connect: 0, Receive: 0, Length: 5, Exceptions: 0)
Write errors: 0
Total transferred: 2441 bytes
HTML transferred: 1441 bytes
Requests per second: 70.23 [#/sec] (mean)
Time per request: 142.394 [ms] (mean)
Time per request: 14.239 [ms] (mean, across all concurrent requests)
Transfer rate: 16.74 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 61 104 32.6 123 142
Waiting: 61 104 32.8 123 142
Total: 61 104 32.6 123 142

Percentage of the requests served within a certain time (ms)
50% 123
66% 124
75% 124
80% 138
90% 142
95% 142
98% 142
99% 142
100% 142 (longest request)

===============================================

 

Mas Test:

***********************************************************
ab -n 10000 -c 10 http://localhost:9090/test-fast-2.php

Server Software:
Server Hostname: localhost
Server Port: 9090

Document Path: /test-fast-2.php
Document Length: 145 bytes

Concurrency Level: 10
Time taken for tests: 144.506 seconds
Complete requests: 10000
Failed requests: 8302
(Connect: 0, Receive: 0, Length: 8302, Exceptions: 0)
Write errors: 0
Total transferred: 2438997 bytes
HTML transferred: 1438997 bytes
Requests per second: 69.20 [#/sec] (mean)
Time per request: 144.506 [ms] (mean)
Time per request: 14.451 [ms] (mean, across all concurrent requests)
Transfer rate: 16.48 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 33 144 51.0 141 378
Waiting: 33 144 50.6 140 378
Total: 33 144 51.0 141 378

Percentage of the requests served within a certain time (ms)
50% 141
66% 164
75% 179
80% 188
90% 213
95% 233
98% 257
99% 274
100% 378 (longest request)

 

Publicado en General | Etiquetado , | Deja un comentario

Mostrar ROLES en SonataAdminBundle para FOSUserBundle

Cuando administramos nuestras entidades con SonataAdminBundle, podemos combinarlo con nuestra implementación de FOSUserBundle. De esta forma


class UsuarioAdmin extends Admin
{

 protected function configureFormFields(FormMapper $formMapper)
 {
 $formMapper
 ->with('Info')
 ->add('nombres')
 ->add('apellidos')
 ->end()
 ->with('Acceso')
 ->add('username', null, array('label' => 'USERNAME') )
 ->add('password')
 ->add('email')
 ->end()
 ->with('Administración')
 ->add('roles', 'sonata_security_roles', array( 'multiple'=>true))
 ->end()
 ;
}
//.....
}

Cuando queremos ver los roles no da un error. Porque no conoce esta opcion ‘sonata_security_roles’ . Para salvar esto tenemos que agregar en /app/AppKernel.php , esto :

new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),

Hay que notar que le estamos pasando un parametro, pues estamos usando FOSUserBundle, como mencionamos en el título de este post.

Al probar nuevamente, tenemos ahora otro tipo de error, algo de una ruta no encontrada ….
Solo debemos agregar esto en el routing.yml :

sonata_user_admin_security_logout:
  pattern: /logout
  defaults: { _controller: FOSUserBundle:Security:logout}

Con eso deberemos poder al entrar a la edicion de algun usuario un SELECT MULTIPLE que nos pintará los roles que tiene asignados ese usuario, y tambien podremos asignar otro roles y quitar alguno presente.

Publicado en General | Etiquetado , , , | Deja un comentario

Instalando via COMPOSER

Bueno, esto esta probado para la SF2.1.x, utilizando Ubuntu 12.04 y Apache2

Ejecuta en tu consola:

sudo gedit /etc/hosts 

o

sudo nano /etc/hosts 

En el archivo /etc/hosts , agregamos esta linea :

miProyecto.local        127.0.0.1

Ahora ejecuta :

sudo gedit /etc/apache2/sites-available/miProyecto.local

o

sudo nano /etc/apache2/sites-available/miProyecto.local

Configura el  servidor web, copiando esto en ese archivo (/home/rober/workspace/Symfony/ en mi elección personal, tu puedes dejarlo en /var/www/) :

<virtualhost *:80>

# Admin email, Server Name (domain name) and any aliases
 ServerAdmin webmaster@miProyecto.local
 ServerName  miProyecto.local
 ServerAlias www.miProyecto.local

# Index file and Document Root (where the public files are located)
 DirectoryIndex app.php
 DocumentRoot /home/rober/workspace/Symfony/miProyecto.local/web

# Custom log file locations
 LogLevel warn
 ErrorLog  /home/rober/workspace/Symfony/miProyecto.local/app/logs/apache/error.log
 CustomLog /home/rober/workspace/Symfony/miProyecto.local/app/logs/apache/access.log combined

</virtualhost>

Una aclaración, sobre los directorios de los LOGs del servidor

/app/logs/apache/

Es una prueba simplemente, que no estoy seguro de si a todo el mundo le puede servir….

Activar

sudo a2ensite miProyecto.local 

Una vez que instalemos COMPOSER, via consola nos colocamos en el directorio del servidor donde crearemos el directorio de nuestro nuevo proyecto y empezamos a descargar todo lo necesario para tener Symfony instalado y crear nuevo proyecto:

php composer.phar create-project symfony/framework-standard-edition ./miProyecto.local

Debo crear el directorio de los logs en el nuevo directorio

cd ./miProyecto.local
mkdir logs

Y reiniciar el servidor web

sudo service apache2 restart

Comprueba la instalación con:

php app/check.php

Bien, solo trata de corregir permisos con estos dos comandos de linea, atendiendo a cambiar los valores www-data y ‘rober’, por el usuario del servidor web y tu usuario en tu sistema:


sudo setfacl -R -m u:www-data:rwx -m u:'rober':rwx app/cache app/logs
sudo setfacl -dR -m u:www-data:rwx -m u:'rober':rwx app/cache app/logs

En el Browser, ir a

http://miProyecto.local/config.php

http://miProyecto.local/app_dev.php/demo/hello/ROBERTO(o lo que tu quieras)

Luego solo debes encargarte de los vendors…. Ah! me olvidaba, con COMPOSER, ya no te tienes que preocupar, él se encarga de todas las dependencias… Luego debes crear un proyecto en tu IDE preferido (Eclipse, el mio), y a trabajar….

 

Unos detalles mas….

Escribo esto en Octubre de 2012, tratando de probar la versión 2.1.2 …
Estaba teniendo muchos problemas para lograr siquiera iniciar un proyecto, el composer no funcionaba como debía, y si lograba ver
/web/app_dev.php
o
/web/config.php

pasaba algo curioso…. lo ejecutaba correctamente, el problema estaba al limpiar el cache dejaba de funcionar…. si asi como se lee…

volvi a instalar apache con

sudo -s
aptitude reinstall apache2 apache2.2-bin

Al /etc/php5/apache/php.ini , se le añade :
suhosin.executor.include.whitelist=”phar”
(cuidado con esas comillas raras)
aprovechar la consola

apt-get install php5-suhosin
php -i | grep suhosin
service apache2 restart
Me parece curiosos que en el check.php no me lo advirtiera pero si el config.php

Parece funcionar…..

Publicado en General | Etiquetado | Deja un comentario

Symfony y todas las buenas cosas que puedes emplear en el WEBDEV

Bienvenida a Symfony.Puentesdiaz.com.ar.

En este sitio, encontrarás información, que entiendo puede interesarte… Desde ya me interesa a mí, y quizás pueda ayudarte a ti también.

Estamos en Julio de 2012. Y Symfony, ahora se conoce como Symfony2 y en pocas semanas tendremos la Symfony2.1. Es por ello que cada articulo, sera etiquetado con la versión de Symfony a la que se haga referencia o muy probablemente, a la última versión de esta grandiosa tecnología.

Desde ya, paso a mencionar cosas que me parecen muy interesantes:

  1. Eclipse PDT
  2. Eclipse Communication Framework o ECF
  3. GIT
  4. Symfony (obvio)
  5. Doctrine
  6. Propel
  7. Composer
  8. Twig
  9. NodeJS
  10. RabbitMQ
  11. Chrome
  12. Firefox
  13. HTML5
  14. ….Linux, claro esta !
Publicado en General | 1 comentario