Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Estoy instalando una máquina con CentOS 7 esperando encontrarme con la última versión estable de PHP, la 7.1.10, y me doy cuenta de que en los repos de CentOS 7 van apenas en PHP 5.4.16.

Consulta:

¿Vale la pena pegarse el salto a PHP 7? Igual el salto es grande, voy a estar adelantado como tres cuadras con respecto al resto de las instalaciones estándar. Mi necesidad es migrar el código de una aplicación vieeeeeja que vive en un PHP 4.3. Es una aplicación web de uso interno con poca demanda que se conecta a una base de datos Oracle.

Si vale la pena el salto, ¿existe una forma de instalar PHP 7 mediante yum configurando repositorios?

Ping @unreal4u @BalroG @ranamaldita @Amenadiel @Potus @Pontifex_Es .
 

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.281
El repo webtatic.com tiene php7 para centos 7

Pero migrar de php4 a php7 no es tan facil como podria ser.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
El repo webtatic.com tiene php7 para centos 7

Pero migrar de php4 a php7 no es tan facil como podria ser.
Igual es un proyecto difícil que implica tocar código y posibilidades ciertas de fracaso, pero me temo que el salto de PHP 4 a PHP 7 sea musho, onda la mitad de las funciones estén deprecadas.

Enviado desde mi VS986 mediante Tapatalk
 
Upvote 0

tglaria

InExperto
Se incorporó
10 Febrero 2005
Mensajes
9.750
Tenía entendido que PHP7 trajo harto avance en desempeño.
Será tan así?
1, 2

Valdrá la pena la ganancia en desempeño con el costo en implementación?
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Tenía entendido que PHP7 trajo harto avance en desempeño.
Será tan así?
1, 2

Valdrá la pena la ganancia en desempeño con el costo en implementación?

El servicio que tengo que migrar tiene pocos accesos así que cualquier mejora en desempeño no se notará. Sin embargo, me gusta tener mis sistemas con las últimas versiones estables liberadas por el fabricante y eso si me valdría la pena el esfuerzo.
 
Upvote 0

ranamaldita

mueranse
Se incorporó
24 Junio 2003
Mensajes
4.522
yo creo que es ya riesgo pasar de php 4 a 5, como ademas pasar de 5 a 7 tabien puede ser "no facil", yo no me agarraria un doble cacho e intentaria moverme a la version certificada primero.
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.599
Estoy instalando una máquina con CentOS 7 esperando encontrarme con la última versión estable de PHP, la 7.1.10, y me doy cuenta de que en los repos de CentOS 7 van apenas en PHP 5.4.16.

Consulta:

¿Vale la pena pegarse el salto a PHP 7? Igual el salto es grande, voy a estar adelantado como tres cuadras con respecto al resto de las instalaciones estándar. Mi necesidad es migrar el código de una aplicación vieeeeeja que vive en un PHP 4.3. Es una aplicación web de uso interno con poca demanda que se conecta a una base de datos Oracle.

Si vale la pena el salto, ¿existe una forma de instalar PHP 7 mediante yum configurando repositorios?

Ping @unreal4u @BalroG @ranamaldita @Amenadiel @Potus @Pontifex_Es .

Respuesta corta: SIIIIIIIIIIIIIIIII!!!!!!!!! Sin embargo, lee mis demás respuestas antes de.

El repo webtatic.com tiene php7 para centos 7

Pero migrar de php4 a php7 no es tan facil como podria ser.

Con webtatic NI A MISA! Es una repo más inestable y "tocado" que la cresta... si quieres algo oficial, ándate por remi, es además el RM (release manager) de PHP7.2 que saldrá creo que en 4 días más y será un release chico que no cambia mucho lo anterior y sólo agrega funcionalidad + mejoras en velocidad (chicas), así que ándate mejor por PHP7.2. Como dije, remi es RM así que algo debe cachar.

PHP7.3 será otro gran release donde (hasta el momento) activarán JIT, haciendo que las llamadas a funciones donde se ocupe type hinting sea muuuuuuuucho más rápido, creo que querían un 20% como mínimo, pero todavía falta al menos año y medio para eso, así que por el momento no se puede prometer nada.

Tenía entendido que PHP7 trajo harto avance en desempeño.
Será tan así?
1, 2

Valdrá la pena la ganancia en desempeño con el costo en implementación?

Sí, de PHP5.6 a PHP7 es entre un 30% a un 80% más rápido. A nosotros con PHP5 apenas nos daba abasto con 2 frontends (estábamos planificando poner 2 frontends adicionales), y ahora estamos con 1 y relajados, incluso en aquellos momentos en que salimos en la tele y nos llega una lluvia de tráfico que dura media hora.

Si actualizas desde PHP4 debe ser del orden de 150%... mínimo. Como nota adicional: desde PHP5.4 aprox. que existe una batería de tests asegurando que cada release no introduzca regresiones. Es decir que desde PHP5.4 en adelante puedes estar bastante seguro que una vez arreglados las BC que publican en cada release, no vas a tener problemas corriendo tu aplicación. En su gran mayoría, son chicos, excepto para releases que cambian de versión mayor.

Dejalo como esta, a menos que quiera optimizar tu app para ser compatible con php7, lo otro es que pruebes la app con un docker con php 7 https://hub.docker.com/r/nimmis/apache-php7/ y veas que tal anda, para ver si vale la pena buscar el repo de php7

Totalmente de acuerdo con barlolo: de PHP4 a 7 hay muuuucha diferencia, así que pruébalo antes de. Partiendo por tu coso en Oracle que la verdad no sé si se ocupe todavía el mismo controlador, creo que se cambió, así que eso significa re-escribir TODAS las queries que se ejecutan. Considerando además los magic quotes y otras "gracias" de PHP4 no creo que llegues muy lejos antes de tirar la esponja xD

Pero si le das, pues yo ocupo vagrant antes que Docker, pero la idea base es la misma: creas una máquina virtual, corres tu código en él y ves cómo anda.

Scripts para hacer esto? Pues ve mis repos en github:
https://github.com/unreal4u/telegram-api/blob/master/Vagrantfile

Eso combinado con esto:
https://github.com/unreal4u/telegram-api/blob/master/VagrantProvisionScripts/base.sh

Crea una máquina virtual con la última versión de PHP7.1 (no olvidar cambiar a PHP7.2 en un par de días más). Te vas al directorio, copias ambos archivos de arriba más otras customizaciones que quieras hacer, ejecutas en tu terminal:
Código:
vagrant up

Y listo, en 192.168.33.10 tendrás corriendo un server. Con eso pruebas y arreglas antes de tirarlo a producción.

Una vez que quieras instalar en producción, ya sea bare metal o vm, tendrás un paso a paso documentado de cómo quieres montar el servidor. Lógicamente antes vas probando quitando y agregando los módulos que ocupes. Menos módulos: menos que cargar en cada request, más rápido y menor footprint de memoria va a tener tu aplicación.

Saludos.

PD::: en mi script desactivo SELinux, te recomiendo NO hacer esto, pero ese script lo copié de la pega donde me dio paja instalar los permisos correctos (Además el use-case es bastante más amplio y complejo que correr una simple página, en producción sí tenemos habilitado SELinux, sólo durante desarrollo se desactiva).

Nuestra OTAP se ve como desarrollo - staging - acceptance - production

Desde staging tenemos activado SELinux así que cualquier cosa que tenga que ver con permisos ya se ve en esa etapa. A la hora que llegue donde el cliente ya debería estar todo arreglado y documentado para que de ahí recién pase a producción.
 
Última modificación:
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.599
Raya para la suma: si ocupas remi te vas a la segura, es increíblemente estable y es la repo menos tocada y más original que te puedas imaginar (De hecho mucho más que los oficiales de Red Hat / CentOS). Nosotros lo ocupamos en máquinas que procesan aprox. 100.000 requests por hora (tráfico normal, tráfico peak puede llegar fácil a los 300.000 por hora) y nunca hemos tenido problemas que provengan desde PHP.
Hace aprox. 3 años que ocupamos remi en producción, desde PHP5.5 si mal no me acuerdo.

Saludos.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ya que los tengo a todos por acá, denme una mano porfa.

Instalé apache + php 5.4 + oci8 (oracle) + php-xml, Phpinfo me muestra que anda todo impeque. Hice unos cambios para pasar de domxml a dom, pero ahora la página no me carga. El error que salta es el siguiente:

Código:
[Tue Oct 24 17:39:05.896648 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Declaration of categoria::action() should be compatible with manten::action($opc) in /var/www/html/pj/admin/class/class.categoria.php on line 550
[Tue Oct 24 17:39:05.896723 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Declaration of categoria::body() should be compatible with manten::body($opc) in /var/www/html/pj/admin/class/class.categoria.php on line 550
[Tue Oct 24 17:39:05.897599 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Non-static method Parameter::get() should not be called statically, assuming $this from incompatible context in /var/www/html/pj/admin/global/class.WebForm.php on line 62
[Tue Oct 24 17:39:05.897666 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Deprecated:  Function split() is deprecated in /var/www/html/pj/admin/global/class.Parameter.php on line 79
[Tue Oct 24 17:39:05.897717 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Non-static method Parameter::loadXML() should not be called statically, assuming $this from incompatible context in /var/www/html/pj/admin/global/class.Parameter.php on line 81
[Tue Oct 24 17:39:05.898247 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Deprecated:  Function eregi() is deprecated in /var/www/html/pj/admin/global/class.WebForm.php on line 62
[Tue Oct 24 17:39:05.898301 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Warning:  eregi(): REG_EMPTY in /var/www/html/pj/admin/global/class.WebForm.php on line 62

Como ven puros warnings pero ningún error fatal.

Ejecuto

http://mi_host/pj/pagina.php

y después de un rato me manda a

http://mi_host/

con una página en blanco.
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.599
Tenía entendido que PHP7 trajo harto avance en desempeño.
Será tan así?
1, 2

Valdrá la pena la ganancia en desempeño con el costo en implementación?

Nuevamente te cito para mostrarte las diferencias de average load de cuando nos cambiamos de PHP5 a PHP7, pero fue hace más de 400 días atrás así que ya no tengo estadísticas para respaldar mis dichos con hechos.
Así que de memoria no más (que es frágil): de lo que me acuerdo, el average load del frontend2 (ese fue el que cambiamos primero) bajó de 5 a 2, quería ver también uso de memoria pero de verdad no me acuerdo... sí me acuerdo que en algún momento lo bajamos de 28GiB a 16GiB, y tb me acuerdo que dp lo bajamos a 8GiB pq no ocupábamos tanto. De ahí lo volvimos a subir pq nos dimos cuenta que mantener una cache en PHP (opcache) era más rápido que tenerlo en disco (son varios millones de archivos de cache), así que lo incrementamos nuevamente a 32GiB y nos topamos con el límite de archivos que puedes mantener simultáneamente en opcache. Al final concluimos que sirve para el 99% del público, así que que ese 1% restante tenga un sitio 0.00001% más lento da lo mismo. De todas formas, tener la cache en PHP ya era más rápido que leerlo y parsearlo para convertirlo en PHP. El use-case es bastante más complicado que lo que digo acá, pero seguimos usando redis y memcache para otras caches que son más dinámicas o que son de bajo TTL.

La cosa es que actualmente el average load anda entre 1 y 2, pero antes del próximo verano tenemos que hacer perfilamiento nuevamente para ver cuáles son nuestros puntos lentos nuevamente así que capaz que baje de nuevo. La última vez que lo hicimos, logramos reducir el tiempo de generación de cualquier request a la mitad. En otras subpáginas, lo bajamos en más de 200%.

Saludos.
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.599
Ya que los tengo a todos por acá, denme una mano porfa.

Instalé apache + php 5.4 + oci8 (oracle) + php-xml, Phpinfo me muestra que anda todo impeque. Hice unos cambios para pasar de domxml a dom, pero ahora la página no me carga. El error que salta es el siguiente:

Código:
[Tue Oct 24 17:39:05.896648 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Declaration of categoria::action() should be compatible with manten::action($opc) in /var/www/html/pj/admin/class/class.categoria.php on line 550
[Tue Oct 24 17:39:05.896723 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Declaration of categoria::body() should be compatible with manten::body($opc) in /var/www/html/pj/admin/class/class.categoria.php on line 550
[Tue Oct 24 17:39:05.897599 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Non-static method Parameter::get() should not be called statically, assuming $this from incompatible context in /var/www/html/pj/admin/global/class.WebForm.php on line 62
[Tue Oct 24 17:39:05.897666 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Deprecated:  Function split() is deprecated in /var/www/html/pj/admin/global/class.Parameter.php on line 79
[Tue Oct 24 17:39:05.897717 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Strict Standards:  Non-static method Parameter::loadXML() should not be called statically, assuming $this from incompatible context in /var/www/html/pj/admin/global/class.Parameter.php on line 81
[Tue Oct 24 17:39:05.898247 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Deprecated:  Function eregi() is deprecated in /var/www/html/pj/admin/global/class.WebForm.php on line 62
[Tue Oct 24 17:39:05.898301 2017] [:error] [pid 2168] [client 172.20.34.18:61028] PHP Warning:  eregi(): REG_EMPTY in /var/www/html/pj/admin/global/class.WebForm.php on line 62

Como ven puros warnings pero ningún error fatal.

Ejecuto

http://mi_host/pj/pagina.php

y después de un rato me manda a

http://mi_host/

con una página en blanco.


Mejor abre nuevo hilo, para no off-topic-ear este :p

Pero respondiendo a tus dudas:

PHP Deprecated: Function eregi() is deprecated
ereg* se cambió por preg*, si mal no me acuerdo eran bastante compatibles entre sí.

PHP Strict Standards: Declaration of categoria::action() should be compatible with manten::action($opc)
La subclase debe tener el mismo encabezado que su parent

PHP Strict Standards: Non-static method Parameter::get() should not be called statically, assuming $this from incompatible context
Llamas a un estático (funcion::get()) cuando en realidad deberías haber ocupado $this->get()

PHP Deprecated: Function split() is deprecated
Varias alternativas de acuerdo al uso: http://php.net/manual/en/function.split.php

La redirección a mi_host no es algo que haga el motor, en alguna parte del código debe ocurrir. Sugiero buscar por
Código:
Location:

Que es la directiva que hace esto. Sin embargo, como se trata de una app vieja, capaz que hayan hecho una redirección mediante algún otro método. Prueba con wget o curl, vas a poder ver la cabecera directo.

Saludos.
 
Upvote 0

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.428
@unreal4u en un tema relacionado ¿Que opinas de phpcpp? esta cosa permite crear extensiones custom de php. Nosotros la estamos usando para realizar alguna operaciones matriciales simples en php y hasta ahora ha funcionado bien, igual nuestras matrices son bien simplecitas (+- 100x100) pero en php puro demoraban una eternidad.
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.599
@unreal4u en un tema relacionado ¿Que opinas de phpcpp? esta cosa permite crear extensiones custom de php. Nosotros la estamos usando para realizar alguna operaciones matriciales simples en php y hasta ahora ha funcionado bien, igual nuestras matrices son bien simplecitas (+- 100x100) pero en php puro demoraban una eternidad.

Nunca he trabajado con PHP-CPP, pero cuando recién partió el proyecto unos 5 años atrás, hablé con el gallo que armó la base (Emiel Bruijntjes) y en ese entonces ya prometía bastante, simplifica bastante el proceso de creación de un plugin y la base está bien armada. La diferencia de performance con C no debería ser tan grande, quizás C puro sea un 1% más rápido. Si vale la pena o no ese 1% adicional lo dejo a tu criterio, en lo personal pensaría primero en qué me dará menos dolores de cabeza a futuro y qué siento más confortable en el equipo: C (teniendo en cuenta todas las macros, hash-tables y el conocimiento de otros interiores de PHP) o PHP-CPP.

De todas formas, revisa si ahora con PHP7 te anda más rápido, el footprint de memoria debería ser casi igual al de C y eso era lo lento, especialmente matrices, el hashtable debería ser minúsculo comparado con lo que era en PHP5.

Saludos.
 
Upvote 0
Subir