IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Comment éviter ce message d'erreur "apache http server a cessé de fonctionner et a été arrêté"?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 69
    Points : 98
    Points
    98
    Par défaut Comment éviter ce message d'erreur "apache http server a cessé de fonctionner et a été arrêté"?
    Bonjour,

    Je voudrais bien savoir comment on peut éviter ce message d'erreur de WampServer "apache http server a cessé de fonctionner et a été arrêté". En fait, j'utilise Vista comme étant un système d'exploitation et j'ai installé WampServer 2.1 avec les caractéristiques suivantes:

    version de Apache: 2.2.17

    version de PHP: 5.3.5

    version de MySQL: 5.5.8

    J'ai cherché beaucoup sur l'internet afin de trouver une solution pour ce bug et en fait j'ai trouvé que sa raison c'est le syntaxe suivant: mysql_close() (vous pouvez jeter un coup d’œil sur ce lien http://forum.wampserver.com/read.php?2,52654,52832 ). Ce qui est bizarre c'est que j'ai pas une telle erreur du syntaxe dans mon code:

    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
     
    <?php
    $a = $_REQUEST['subject1'];
    $con=mysqli_connect("localhost","root","","wkayetdb");
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $result = mysqli_query($con,"SELECT id, message FROM notifications WHERE subject = '".$a."' AND status = 'unseen' ORDER BY id DESC LIMIT 0, 1");
    $notification = array();
    while($row = mysqli_fetch_array($result)) {
            $id = $row['id'];
            $message = $row['message'];
            if($message=="a ajouté"){
                $result1 = mysqli_query($con,"SELECT notifications.id AS id, groupe.id_groupe AS groupid, eventsgroupe.start AS startdate, groupe.groupename AS groupname, notifications.message AS message, eventsgroupe.title AS title, notifications.status as status FROM notifications, eventsgroupe, groupe WHERE notifications.actor = groupe.id_groupe AND notifications.object = eventsgroupe.id AND notifications.id = '".$id."'");
                while($row1 = mysqli_fetch_array($result1)) {
                    $notification = array('id'=>$row1['id'],'groupid'=>$row1['groupid'],'startdate'=>$row1['startdate'],'groupname'=>$row1['groupname'],'message'=>$row1['message'],'title'=>$row1['title'],'status'=>$row1['status']);
                }
            }
            elseif(($message=="a accepté votre invitation de rejoindre votre groupe")||($message=="a décliné votre invitation de rejoindre votre groupe")){
                $result2 = mysqli_query($con,"SELECT notifications.id AS id, groupe.groupename AS groupname, notifications.message AS message, user.name AS username FROM notifications, user, groupe WHERE notifications.actor = user.id_user AND  notifications.object = groupe.id_groupe AND notifications.id = '".$id."'");
                while($row2 = mysqli_fetch_array($result2)) {
                    $notification = array('id'=>$row2['id'],'username'=>$row2['username'],'message'=>$row2['message'],'groupname'=>$row2['groupname']);
                }
            }
    }
    echo json_encode($notification);
    mysqli_close($con);
    ?>
    Juste veuillez se concentrez sur ces deux lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $con=mysqli_connect("localhost","root","","wkayetdb");
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysqli_close($con);
    Je me demande alors quel est le problème exactement??..Est ce qu'il y a quelqu'un qui a une idée?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Si jamais ta connection sql ne fonctionne pas, la variable con ne contiendra rien d'ou le plantage de mysql_close et l'erreur de http. (en tout cas c'est ma conclusion après avoir lu ton code et le post sur l'erreur dont tu parles ).

    Tu teste bien le retour de mysql_connect par contre en cas d'erreur, tu n'arretes pas le traitement, tout le bloc serait, pour moi, à encadrer dans le else de ton premier if .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 69
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    En fait, concernant le bloc if c'est ce que j'ai trouvé sur le lien: http://www.w3schools.com/php/php_mysql_connect.asp. Et à ce qui concerne la variable "con", elle n'est pas vide puisque j'ai testé la connexion des utilisateurs sur le site que je suis en train de développer. Donc il n'y a pas des problème avec la connexion à la base des données.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Quand la fermeture d'une connexion pose problème... il suffit de laisser faire php -> supprime simplement la ligne mysqli_close($con); cela ira aussi bien.

  5. #5
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Quand la fermeture d'une connexion pose problème... il suffit de laisser faire php -> supprime simplement la ligne mysqli_close($con); cela ira aussi bien.
    Euh pardon? laisser une connection active dans le code n'est jamais une bonne solution.... surtout qu'il n'est pas garanti que ta connection soit fermé après l'exécution de ta page. ça revient à dire de faire des malloc sans free ...... autrement dis -----> A BANNIR.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par skeud Voir le message
    .... surtout qu'il n'est pas garanti que ta connection soit fermé après l'exécution de ta page. ça revient à dire de faire des malloc sans free ...... autrement dis -----> A BANNIR.
    Autrement dit :
    Citation Envoyé par manuel php
    L'utilisation de mysql_close() n'est pas habituellement nécessaire, puisque les connexions non persistantes ouverts sont automatiquement fermées à la fin l'exécution du script.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par skeud Voir le message
    Euh pardon? laisser une connection active dans le code n'est jamais une bonne solution.... surtout qu'il n'est pas garanti que ta connection soit fermé après l'exécution de ta page. ça revient à dire de faire des malloc sans free ...... autrement dis -----> A BANNIR.
    N'exagérons rien :
    Citation Envoyé par Zend - DevZone
    Open connections (and similar resources) are automatically destroyed at the end of script execution.
    However, you should still close or free all connections, result sets and statement handles as soon as they are no longer required. This will help return resources to PHP and MySQL faster.
    http://devzone.zend.com/239/ext-mysq...ents/#Heading6

    Bref, c'est une bonne idée de fermer les connexions, mais normalement ça ne devrait pas poser trop de problèmes si ce n'est pas fait.

    Cela dit, un plantage Apache sur une une erreur de fermeture de connexion, c'est quand même violent. C'est un peu comme si le moteur de ma voiture s'arrêtait parce que je ne peux pas éteindre les phares.

    Donc mon conseil dans le cas présent serait de virer l'instruction de fermeture et de retester.

    Au passage, attention à ne pas confondre les fonctions mysql_xxxx avec les fonctions mysqli_xxxx
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Autant pour moi ^^. Me suis emballé un peu vite . Sinon, je trouve normal que php foire si la connexion en question n'est pas valide, de là à ce qu'il crash, je sais pas. Je réitère quand même mon commentaire: ne pas fermer une connexion qui a échoué et ne pas exécuter le code si la connexion à échoué . (je suis têtu mais je pense sérieusement que l'erreur vient de là ).
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    ... L'erreur vient souvent d'une connexion que l'on ferme à la fin d'un script, alors que tous les processus faisant appels à la bdd ne sont pas encore terminés. Cela peut se produire assez facilement avec des scripts imbriqués.

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce qui m'embête, c'est que normalement ce genre d'erreur ne fait pas planter Apache
    J'ai exécuté ce magnifique code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $con = mysqli_connect('localhost', 'toto','','bdd');
    mysqli_close($con);
    sur mon serveur WAMP, qui n'a aucune chance de fonctionner pour la simple et bonne raison que je n'ai pas de base

    Et tout ce que j'obtiens, c'est une paire d'erreurs :
    ( ! ) Warning: mysqli_connect(): (HY000/1044): Access denied for user ''@'localhost' to database 'bdd' in truc.php on line 2
    ( ! ) Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in truc.php on line 3
    On va p'tet attendre des nouvelles du posteur d'origine.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Erreur Apache HTTP Server
    Par coolanso dans le forum Apache
    Réponses: 4
    Dernier message: 21/10/2013, 15h17
  2. [Wamp] APPCRASH:Apache HTTP Server a cessé de fonctionner
    Par afrodizaks dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 03/12/2012, 02h36
  3. Comment éviter les messages d'erreur lors de requêtes SQL
    Par Pentos60 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/01/2011, 09h38
  4. Apache http server a cessé de fonctionner
    Par Galdon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/11/2009, 19h08
  5. Comment éviter les messages d'erreur
    Par curt dans le forum IHM
    Réponses: 3
    Dernier message: 28/08/2008, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo