Foros del Web » Programando para Internet » PHP »

¿Para que sirven los ticks?

Estas en el tema de ¿Para que sirven los ticks? en el foro de PHP en Foros del Web. Hola gente como estan? releyendo el manual de php con el objetivo de aprender las partes del lenguaje que aun desconozco, me tope con los ...
  #1 (permalink)  
Antiguo 01/07/2014, 23:31
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
¿Para que sirven los ticks?

Hola gente como estan? releyendo el manual de php con el objetivo de aprender las partes del lenguaje que aun desconozco, me tope con los ticks, la primer linea arranca diciendo:

Cita:
Un tick es un evento que ocurre para cada sentencia tickable
No puedo evitar pensar en la frase "Para entender la recursividad primero hay que entender la recursividad" no obstante segun deduje del parrafo siguiente, cada tick es un evento que ocurre cuando php ejecuta una llamada a la api de la sentencia.

Como no entendi bien que era, agarre el editor y registre con register_tick_function un tick, este es el codigo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. declare(ticks=1);
  4. register_tick_function(function() { echo "Llamada a tick!<br>"; });
  5.  
  6. class mi_clase
  7. {
  8.     public function mi_metodo()
  9.     {
  10.         echo("Llamada a mi metodo<br>");
  11.     }
  12. }
  13.  
  14. $objeto = new mi_clase();
  15. $objeto->mi_metodo();

El cual genera esta salida:
Cita:
Llamada a tick!
Llamada a tick!
Llamada a tick!
Llamada a mi metodo
Llamada a tick!
Llamada a tick!
WTF? Bueno, totalmente desconcertado, se me ocurrio que tal vez, la funcion del tick reciba algun argumento de parte de php con informacion de que esta haciendo, pero no, php no le pasa ningun parametro.

Como aplicacion practica solo se me ocurre que se puede implementar un contador de llamadas a la api nativa, pero no creo que php tenga 3 funciones y una construccion del lenguaje solo para esta tarea tan irrelevante, alguien podria decirme para que sirven?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #2 (permalink)  
Antiguo 02/07/2014, 06:01
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: ¿Para que sirven los ticks?

En PHP6 creo q no estarán...

un tick es... ¿una ejecucion de un bloque? por decirlo de alguna forma.. xD

Podría servirte para hacer un debug extremo y ver donde falla algo... pero vamos, es algo muy raro y q se usar muy poco
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 02/07/2014, 06:45
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: ¿Para que sirven los ticks?

@NSD : como vas amigo ?


Los ticks se corresponden como te dice @Eleazan con algo indenfinido como un "bloque" lo cual puede ser una sola sentencia o N, en cierta forma permitirian ejecutar un segundo programa en paralelo con el primero (quien dijo "concurrencia"?) pero en la practica no ha servido de mucho, fue una caracteristica experimental, poco documentada y de futuro incierto.
__________________
Salu2!
  #4 (permalink)  
Antiguo 02/07/2014, 11:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: ¿Para que sirven los ticks?

Basicamente algunas aplicaciones que se me ocurren:
  • Verificacion
  • Profiling
  • manejo de memoria y conteo de llamadas a funciones

Como nota adicional todos lo elementos de la lista se pueden lograr de otras formas y en lo personal no lo he visto aplicado. Asi que si alguien lo esta usando seria interesante ver que usos le a dado a esto.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 02/07/2014, 16:51
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: ¿Para que sirven los ticks?

@Eleazan Gracias por la data, si estan en la mira para ser eliminados no perdere mucho tiempo con ellos, sin embargo es sorprendente (o preocupante) que un lenguaje tan popular tenga características redundantes, porque si lo que hace falta es un debug de tal magnitud, hay exenciones dedicadas a ello.

@Italico76 Bien y tu como estas? Gracias por la respuesta, ¿Es posible hacer programacion multihilo con los ticks? creia que solo se podia usando los POSIX threads o pcntl_fork ¿o a lo que te refieres es a que serviria para monitorear estos hilos?

@hhs Gracias por los ejemplos, si supongamos se quiere realizar un sistema de profiling con ticks, se deberia en cada funcion particular registrar un nuevo tick ¿verdad?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 03/07/2014, 14:50
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: ¿Para que sirven los ticks?

Cita:
@hhs Gracias por los ejemplos, si supongamos se quiere realizar un sistema de profiling con ticks, se deberia en cada funcion particular registrar un nuevo tick ¿verdad?
No es necesario, solo tienes que darle valor de 1 a N y con eso se va estar disparando el evento por cada sentencia que este después del bloque declare:
Código PHP:
Ver original
  1. declare(ticks=1) {
  2.     // entire script here
  3. }

Recuerda tener en consideración la nota del manual:
Cita:
Not all statements are tickable. Typically, condition expressions and argument expressions are not tickable.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:15.