Yo no es que sea muy inteligente, de hecho, si lo fuera no estaría aquí preguntando, me las arreglaría yo solo. Suponía que el hecho de que se produjera un error tan peculiar tendría una explicación sencilla, independiente del código programado, la cual yo no he sido capaz de averiguar.
Es un script que comprueba el estado de los enlaces, devolviendo el código de estado y la url hacia dónde redirecciona, en caso de que devuelva el 301, 302,... El archivo cron hace un include del script y la respuesta la graba en la base de datos actualizando cada id de enlace con su código y redirección, si procede.
¿Por qué la siguiente sentencia funciona correctamente si ejecuto el cron manualmente desde el navegador y no funciona si lo hace automáticamente el servidor?
Código:
mysql_query("UPDATE pages_headers SET codigo = ".$cidigo.", redirect = '".$redireccion."' WHERE id = '".$id."'");
Lo he probado con un mismo enlace que redirecciona y cuando lo ejecuto manualmente me graba en la base de datos el codigo 302 y la url hacia donde redirecciona, pero si lo hace el servidor, me graba el codigo 200 y la url hacia donde redirecciona. Es decir, la redirección me la graba en ambos casos correctamente, pero el código no.