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
Concrètement :
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 -------------------
dbmanager.inc.php
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
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>'); } } [...] } ?>
Tous les fichiers lancés par cron ont le même problème (4 crons au total).
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); [...] ?>
Vous avez une idée parce que mon admin système et moi séchons méchamment![]()
Partager