Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Drewermerc en 22 Julio 2014, 19:10 pm



Título: duda con librerias de apache
Publicado por: Drewermerc en 22 Julio 2014, 19:10 pm
Hola a todos.
Bueno acabo de tener un problema el cual era que mi servidor apache no ejecutaba php y despues de buscar encontré era pro que no esta instalada la libreria de apache para php la instale y se soluciono y mi preguntas es como saber cuando se trata de un problema de librerias y como puedo saber si las tengo instaladas, también cuales son la libreria indispensable o básicas para que el servidor corra bien.

Tambien quería ver si me daban una idea de como hacer lo siguiente:
lo que quiero hacer es tomas un rango de fecha con horas minutos segundo y dias por ejemplo de 20/marzo/2014 a 22/marzo/2014 con la hora actual y que tengas un contador que me diga cuantas hora minuto segundo y días han pasado desde el 20 de marzo pero como van avanzando los segundos, minutos, días y horas se tiene que ir incrementando  el contador.
bueno espero que me haya entendido y me pueda ayudar.
Saludos.
Drewermerc.


Título: Re: duda con librerias de apache
Publicado por: MinusFour en 22 Julio 2014, 19:25 pm
Si no necesitas nada mas que el apache por ahora así dejalo, muchos de los modulos indispensables vienen en la instalación por default de apache. Algunos modulos van a incrementar la carga en RAM de tus procesos, por lo que no es bueno instalar modulos así nada más.

En cuanto a como realizar lo de la fecha puedes hacerlo directamente desde javascript (basados en el reloj de tu sistema) o puedes conseguir una respuesta de un servidor (el reloj del servidor) y animarla con javascript.


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 22 Julio 2014, 19:35 pm
Hola MinusFour.
gracias por responder bueno entonces como valla utilizando o necesitando los modulos los instalo.

bueno con respecto al problemas es que no quiero hacer un reloj solo un simple contador por ejemplo:
dias  2
horas 48
minutos 2880
segundos 172800

que me diga esos datos de del rango de las fecha que le diga en este caso 20/julio/2014 22/julio/2014
pero como el reloj del servidor sigue avanzando quiero que valla incrementando los contadores.


Título: Re: duda con librerias de apache
Publicado por: MinusFour en 22 Julio 2014, 19:47 pm
que me diga esos datos de del rango de las fecha que le diga en este caso 20/julio/2014 22/julio/2014
pero como el reloj del servidor sigue avanzando quiero que valla incrementando los contadores.


Hay algo raro aquí, si estás haciendo una resta entre 2 fechas, el reloj no debería ir aumentando. Pero por ejemplo para contar los segundos/horas/dias desde una fecha en especifico hasta "ahora" y por "ahora" me refiero al presente, entonces si puedes mostrar un contador.


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 22 Julio 2014, 20:21 pm
Hola bueno mira lo que quisiera hacer algo asi como tiempo unix que da los segundos desde el 1 de enero de 1970 pero en lugar de que inicie desde esa fecha hacerla desde por ejemplo 20/julio/2014 y me valla mostrando los segundos, minutos, horas,  dias, mes, año  no se si ya quedo un poco mas claro que quisiera hacer.


Título: Re: duda con librerias de apache
Publicado por: MinusFour en 23 Julio 2014, 00:21 am
Hay varias consideraciones, al menos para una persona quisquillosa como yo. Si queremos usar el reloj del servidor, tienes que medir la respuesta de tiempo del servidor y sumarla a la fecha que te trae el servidor.

Hay varias formas de hacer la resta, pero yo creo que la mejor forma es usar DateTime:diff(), y el código es así de sencillo:

Código
  1. <?php
  2. if(!isset($_GET["time"])){
  3. die();
  4. }
  5.  
  6. $dateTime1 = new DateTime($_GET["time"]);
  7. $dateTime2 = new DateTime(date("m/d/Y H:i:s", time()));
  8. $dateInterval = $dateTime1->diff($dateTime2);
  9.  
  10. $diasTotales = $dateInterval->days;
  11. $anos = $dateInterval->y;
  12. $meses = $dateInterval->m;
  13. $dias = $dateInterval->d;
  14. $horas = $dateInterval->h;
  15. $minutos = $dateInterval->i;
  16. $segundos = $dateInterval->s;
  17.  
  18. echo "{ \"diasTotales\" : $diasTotales, \"anos\" : $anos, \"meses\" : $meses, \"dias\" : $dias, \"horas\" : $horas, \"minutos\" : $minutos, \"segundos\" : $segundos }";
  19.  
  20. ?>

De ahí puedes sacar la diferencia de las fechas. Para mostrar el contador, necesitas animarlo y para eso necesitas usar javascript. Te recomendaría que usaras AJAX para enviarle la fecha al servidor y que este te conteste con la diferencia al momento. Puedes usar el objeto nativo de los navegadores XmlHttpRequest o la implementación de jQuery.

Un ejemplo con jQuery:

Código
  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  5. <script type="text/javascript">
  6. var contador;
  7. var intervalControl;
  8.  
  9. function load() {
  10.    var prevTime = (new Date()).getTime();
  11.    var dia = $("#dateDay").val();
  12.    var mes = $("#dateMonth").val();
  13.    var ano = $("#dateYear").val();
  14.    var fecha = "time=" + mes + "/" + dia + "/" + ano;
  15.    $.ajax({
  16.        type: "GET",
  17.        url: "./time.php",
  18.        dataType: "json",
  19.        data: fecha,
  20.        success: function (response) {
  21.            var newTime = (new Date()).getTime();
  22.            var diffTime = newTime - prevTime;
  23.            var secs = Math.round(diffTime / 3600);
  24.            response.segundos = response.segundos + secs;
  25.            contador = { diasTotales: response.diasTotales,
  26. anos: response.anos,
  27. meses: response.meses,
  28. dias: response.dias,
  29. horas: response.horas,
  30. minutos: response.minutos,
  31. segundos: response.segundos };
  32.        },
  33. error: function(jqxhr, textStatus, errorThrown){
  34. console.log(textStatus, errorThrown);
  35. },
  36.    });
  37.  
  38.    intervalControl = setInterval(function () {
  39.        var showText = "Dias Totales: " + contador.diasTotales + "<br />" + "Años: " + contador.anos + "<br />" + "Meses: " + contador.meses + "<br />" + "Dias: " + contador.dias + "<br />" + "Horas: " + contador.horas + "<br />" + "Minutos: " + contador.minutos + "<br />" + "Segundos: " + contador.segundos + "<br />";
  40. $("#answer").html(showText);
  41. contador.segundos = contador.segundos + 1;
  42.        if (contador.segundos == 60) {
  43.            contador.segundos = 0;
  44.            contador.minutos = contador.minutos + 1;
  45.            if (contador.minutos == 60) {
  46.                contador.minutos = 0;
  47.                contador.horas = contador.horas + 1;
  48.                if (contador.horas == 24) {
  49.                    contador.horas = 0;
  50.                    contador.dias = contador.dias + 1;
  51.                }
  52.            }
  53.        }
  54.  
  55.    }, 1000);
  56. }
  57. </script>
  58. </head>
  59. <body>
  60.        <h3>Calculate how many seconds since: </h2>
  61.        <input style="width: 30px;" maxlength="2" id="dateDay" type="number" />
  62.        <input style="width: 30px;" maxlength="2" id="dateMonth" type="number" />
  63.        <input style="width: 50px;" maxlength="4" id="dateYear" type="number" />
  64.        <div id="answer"></div>
  65.        <input type="button" value="Calcular" onclick="load()" />
  66.    </center>
  67. <body>
  68. </html>


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 23 Julio 2014, 06:45 am
Hola MinusFour.

gracias por el código aun que aun no manejo ajax pero si entendí varias de las cosas ya que es javascript y si lo manejo un poco, aun que no se si es una variable predefinida en ajax response eso si no lo entendí bien.

y bueno una cosa intente encontrar por que no da la diferencia de las horas  y minutos solo poner la hora actual no se si me puedas ayudar o si quieres dime en que parte me tengo que enfocar del código para poder resolverlo yo.

bueno muchas gracias de nuevo por el código.
Saludos.
Drewermerc.


Título: Re: duda con librerias de apache
Publicado por: engel lex en 23 Julio 2014, 06:58 am
apegandome al tema inicial del post como una recomendacion... no es bueno instalar apache solo desde 0 y montar todo a menos que seas un experto en el tema... es preferible instalar xampp, wampp, lampp (depende de tu sistema operativo) que trae todo lo necesario para montar un server local de pruebas, apache, mysql, php, y las librerias necesarias de estos para experimentar


---

agrego...

es bueno de php buscar a parte la librería xdebug (http://xdebug.org/wizard.php) ya que esta es la que habilita la posibilidad de hacer debug al php, si tienes un editor como el netbeans (el que yo uso para php, java y c++) permite hacer el debug con una comodidad y detalle tremendo :P


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 23 Julio 2014, 07:10 am
Hola angel lex.
Gracias por la recomendación  y bueno estoy ahorita estoy usando linux y como siempre lo habia instalado cada paquete por separado nunca habia tenido problemas hasta hoy no se por que, aun que lo de xampp o wamp si los e utilizado en windows.

Edito:
Bueno gracias por el dato la buscare e instalare la libreria para probarla junto con netbeans.

Saludos.
Drewermerc.


Título: Re: duda con librerias de apache
Publicado por: MinusFour en 23 Julio 2014, 07:40 am
Hola MinusFour.

gracias por el código aun que aun no manejo ajax pero si entendí varias de las cosas ya que es javascript y si lo manejo un poco, aun que no se si es una variable predefinida en ajax response eso si no lo entendí bien.

y bueno una cosa intente encontrar por que no da la diferencia de las horas  y minutos solo poner la hora actual no se si me puedas ayudar o si quieres dime en que parte me tengo que enfocar del código para poder resolverlo yo.

bueno muchas gracias de nuevo por el código.
Saludos.
Drewermerc.

Sí está restando las horas, minutos y segundos. Lo que pasa es que estamos restando a las 00:00 (el inicio) del día. Si quieres restar horas, minutos y segundos , debes agregar al campo time que envias al servidor.

Código
  1.    var fecha = "time=" + mes + "/" + dia + "/" + ano;

Necesitarías enviar algo así como:

Código
  1.    var fecha = "time=" + mes + "/" + dia + "/" + ano + " " + hora + ":" + minuto + ":" + segundo;

Tienes que crear los inputs para poner la hora, minuto y segundo, recojer los valores de estos inputs y darles sus variables para enviar por AJAX.


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 24 Julio 2014, 17:50 pm
Hola MinusFour.

Gracias lo voy a estudias un poco de ajax y lo intentare hacer gracias de nuevo.

Saludos.
Drewermerc.


Título: Re: duda con librerias de apache
Publicado por: MinusFour en 24 Julio 2014, 18:31 pm
Hola MinusFour.

Gracias lo voy a estudias un poco de ajax y lo intentare hacer gracias de nuevo.

Saludos.
Drewermerc.

Si no sabes javascript, yo empezaría por ahí y después jQuery y finalmente los metodos AJAX de jQuery (que los hay nativos tambien). Al script lo único que le hace falta es un metodo de control para la función que se ejecuta en el intervalo de 1 segundo (cuando calcules una nueva fecha, se empezarán a ejecutar dos intervalos, haciendo que el reloj sume 2 segundos), los nuevos inputs y también habría que considerar el caso en que la suma de lo que tardo en procesar el AJAX  mas los segundos de la diferencia que traes es mayor a 60 segundos, porque en ese caso simplemente seguirá aumentando los segundos y nunca los minutos.


Título: Re: duda con librerias de apache
Publicado por: Drewermerc en 26 Julio 2014, 01:08 am
Hola MinusFour.
Bueno pues de javascript se lo basico asi que creo que no se me hara tan dificil  revisare bien jquery y ajax  y si es que no me sale escribiré mi problema y bueno muchas gracias por toda la ayuda.

Saludos.
Drewermerc.