Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Lauryx en 11 Marzo 2009, 17:25 PM

Título: Sesiones en un cron
Publicado por: Lauryx en 11 Marzo 2009, 17:25 PM
Hola!

Estoy haciendo un cron en el cual tengo que utilizar sesiones para comprobar que no se este ejecutando ya (se tiene que ejecutar cada dos segundos y no se pueden superponer), y he visto que no funcionab, así que me he creado un pequeño archivo para comprobar que funcionasen las sesiones y no funcionan...

Este es el codigo que he creado de prueba (no os extrañéis por lo de doquery, es una funcion para simplificar las querys...):
Código (php) [Seleccionar]
session_start();

if($_SESSION['funcionando']== true)
{
doquery("UPDATE {{table}} SET authlevel = authlevel + 1 WHERE id = '2'","users");
echo "bien!!!";
}

if(!isset($_SESSION['funcionando']))
{
$_SESSION['funcionando'] = true;
}

?>


Lo utilizo en un cron con el siguiente comando:
/usr/local/bin/php5 -q /home/xxxxxx/www/actualizador_continuo.php

Y me da el error de headers...
Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent in <b>/home/xxxxxx/www/actualizador_continuo.php</b> on line <b>17

Como puedo hacer para que si me permita usar sesiones desde un cron??

Gracias por la ayuda
Título: Re: Sesiones en un cron
Publicado por: Karman en 11 Marzo 2009, 23:00 PM
tu error está donde te lo marca:

Cita de: XafiloX en 11 Marzo 2009, 17:25 PM
Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - [b]headers already sent in <b>/home/xxxxxx/www/actualizador_continuo.php</b> on line <b>17[/b]

como verás te dice que en la línea 17 estás imprimiendo texto con un echo o print, o cualquier otra variante... no puedes modificar la cabecera si "colocaste" algún dato a la vista del cliente...

S2
Título: Re: Sesiones en un cron
Publicado por: Spider-Net en 12 Marzo 2009, 01:38 AM
Tu problema es que no has puesto el código completo que has hecho.

La función session_start siempre siempre siempre siempre ha de ir al principio del archivo php, antes que cualquier otra cosa, si dicho archivo contiene sentencias html éstas deben ir después del session_start(). Antes de session_start() no pongas nunca ni siquiera un salto de línea porque dará error al haber envíado las cabeceras, por lo tanto haz así:

Código (php) [Seleccionar]
<?php
      session_start
();
?>

<!-- AQUI TODO EL HTML!! -->
<html>
<head><title>titulo</tytle>
<style type="text/css">

</style>
<body>
<?php
      
//AQUÍ IRIA EL RESTO DE TU CÓDIGO
     
if($_SESSION['funcionando']== true)
     {
     doquery("UPDATE {{table}} SET authlevel = authlevel + 1 WHERE id = '2'","users");
     echo "bien!!!";
     }
 
      if(!isset(
$_SESSION['funcionando']))
      {
    $_SESSION['funcionando'] = true;
       }
?>

</body>
</html>
Título: Re: Sesiones en un cron
Publicado por: Lauryx en 12 Marzo 2009, 18:05 PM
Spider-Net, ese era todo el codigo que habia... (ademas de un par de includes)...He probado tu codigo tal cual en un cron y nada, no funciona...el mismo error de antes...
Título: Re: Sesiones en un cron
Publicado por: Spider-Net en 12 Marzo 2009, 20:05 PM
Los includes no estarán por casualidad antes del session_start() no???  :¬¬ :¬¬
Título: Re: Sesiones en un cron
Publicado por: Lauryx en 12 Marzo 2009, 22:34 PM
No, no...y ademas ejecutandolo desde el navegador si funcionaba...  :-\
Título: Re: Sesiones en un cron
Publicado por: Spider-Net en 12 Marzo 2009, 22:46 PM
Pues me parece entonces que el cron no te va a permitir sesiones...
Título: Re: Sesiones en un cron
Publicado por: Karman en 13 Marzo 2009, 02:01 AM
dependiendo de ciertas configuraciones de PHP, sentencias del tipo:

Código (php) [Seleccionar]

$_SESSION['funcionando'] = true;


tampoco son permitidas una vez que se puso algo a la vista del usuario, me pasó con varios servidores que tuve que mover todo el manejo de sesiones antes de realizar una salida... prueba y dinos que pasa...

S2
Título: Re: Sesiones en un cron
Publicado por: Lauryx en 13 Marzo 2009, 19:22 PM
No, no, si si que es valido, ya que funciona llamandolo desde el navegador