Bonjour à tous, ça m'avait presque manqué d'avoir des problèmes tellement prise de tête que je doive venir les partager ici

Pour un site internet de jeu, nous avons développé des crons pour effectuer des actions sur la base, jusque là, rien de sorcier.

Seulement voilà un petit matin, sans aucune action apparente de notre part, hors développements habituels sur les fichiers du projet, nous nous retrouvons avec des logs d'erreur...

Le log signale un "no database selected" pourtant tout le cron s'exécute parfaitement ensuite!

log.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
----------------
Error on the file : cron.php 
Bad Request : SELECT COUNT(id) FROM table WHERE active = 1 AND attitude IS NOT NULL
Error : No database selected
Date : 2009-03-31 07:00:02
----------------
$_SESSION:
----------------
NULL
 
-------------------
Concrètement :

dbmanager.inc.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
 
//////////////////////////////////////////////////
// Titre : dbmanager.inc.php
// Description: Ce fichier sert de base à la gestion des accès BDD
// Classe mère : Aucune
// Classes filles: Aucune
// Responsable : Linio
//////////////////////////////////////////////////
 
class DBManager {
 
public static function connect(){
	mysql_connect('monhote','login','pass');
	mysql_select_db('madb');
	mysql_query("SET NAMES 'utf8'");
}
 
 
public static function processQuery($query){
 
	$ressourceLink = mysql_query($query);
 
	if ($ressourceLink)
		return $ressourceLink;
	else{
	// Erreur dans la requête
		$file = array_pop(explode('/', $_SERVER['PHP_SELF']));
		$handle = fopen("monlog.txt", "a");
		$error = '
----------------
Error on the file : '.$file.' 
Bad Request : '.$query.'
Error : '.mysql_error().'
Date : '.date("Y-m-d H:i:s").'
----------------
$_SESSION:
----------------
';
ob_start();
var_dump($_SESSION);
$error .= ob_get_contents();
ob_end_clean();
$error .= '
-------------------
';
		fwrite($handle,$error);
		exit('<b>ERREUR : Une requête SQL a provoqué une Erreur, un administrateur a été contacté pour régler le problème.</b>');
 
	}	
}
 
[...]
 
}
 
?>
cron.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
<?php
 
// Le fichier config ne contient que des lignes de define("var","valeur");
include_once ('../includes/config.inc.php');
require_once ('../classes/dbmanager.inc.php');
 
DBManager::connect();
 
 
$link = DBManager::processQuery('SELECT COUNT(id) FROM table WHERE active = 1');
$count = mysql_fetch_row($link);
 
[...]
 
?>
Tous les fichiers lancés par cron ont le même problème (4 crons au total).
Vous avez une idée parce que mon admin système et moi séchons méchamment