Sesiones en un cron

Iniciado por XafiloX, 11 Marzo 2009, 17:25 PM

0 Miembros y 1 Visitante están viendo este tema.

XafiloX

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

Karman

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

Spider-Net

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>

XafiloX

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...

Spider-Net

Los includes no estarán por casualidad antes del session_start() no???  :¬¬ :¬¬

XafiloX

No, no...y ademas ejecutandolo desde el navegador si funcionaba...  :-\

Spider-Net

Pues me parece entonces que el cron no te va a permitir sesiones...

Karman

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

XafiloX

No, no, si si que es valido, ya que funciona llamandolo desde el navegador