PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : MySQL, PostgreSQL, etc... » Mysql : select et update en fonction du résultat » 29-01-2012 07:59:21

Merci, Merci, Merci Pierrot !
Grâce à toi l'année commence bien pour moi... smile:)
J'avais complètement oublié ce point plus qu'important dans les bases de données : l'indexing
J'avais bien indexé certains champs de ces tables pour d'autres processus mais j'avais oublié de le faire pour celui-ci (les champs en cause sont différents)
De ce fait le temps de process est passé de 40 minutes à 34 secondes (et oui tu as bien lu !!!) pour 8000 lignes.
Bravo.:)

Jean-Claude l'ancien.

#2 MySQL, PostgreSQL, etc... » Mysql : select et update en fonction du résultat » 29-01-2012 07:59:21

jcnconsultant
Réponses : 4

Bonjour à tous et meilleurs voeux au seuil de cette nouvelle année.
Voilà mon problème :
J'ai trois tables avec des jointures :
isf_ingenieur, isf_diplomes et une table temporaire isf_tempo dans laquelle j'ai mis les modifications que je dois effectuer sur les deux premières (c'est le résultat d'une inclusion de fichier Excel) .
En fonction du résultat du SELECT je mets le champ temp_flag = 1 ou non via un UPDATE à l'intérieur du WHILE.

Cette opération fonctionne, le résultat que j'obtiens est exact,  mais elle met beaucoup de temps : près de 40 minutes pour une table isf_tempo de 8.000 lignes. Or je dois traiter des tables plus importantes de 80.000 lignes et plus...
Je me demande donc si je ne peux l'effectuer en une seule transaction qui me permettrait de gagner, peut être, du temps d'exécution.
Quelqu'un parmi vous pourrait-il m'aider ou m'orienter car je sèche sur la solution ?
Un grand merci d'avance.
Jean-Claude l'ancien

 
$startTime = microtime(true);
$a="1";
    $sql1 = "SELECT *
     
    FROM isf_tempo t1
    LEFT JOIN isf_diplomes t2
    ON t1.temp_num_asso=t2.dip_num_association
    LEFT JOIN isf_repertoire t3
    ON t2.dip_num_ingenieur=t3.rep_numero
   
    WHERE
    t1.temp_nom = t3.rep_nom
    AND t1.temp_prenom = t3.rep_prenom
    AND t1.temp_millesime = t2.dip_millesime
    "
;
   
    # on envoie la requête
    $req1 = mysql_query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.mysql_error());
    while($data1 = mysql_fetch_assoc($req1))
      {
        $sql2 = "UPDATE isf_tempo SET temp_flag='1', temp_maj='M' WHERE temp_id ='".$data1['temp_id']."'";
        # on envoie la requête
        $req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
        $a++;        
      }
      echo "<div class=\"erreur1\">Il y a ".$a." diplomés de cette association déjà dans la base. Ils ont été signalés et marqués.</div>";
    $endTime = microtime(true);  
    $elapsed = $endTime - $startTime;  
     
    echo "Temps d'exécution : $elapsed secondes";  

 

#3 Re : Forum Général PHP » problème d'accès à distance à la base de donnée » 17-09-2010 11:09:34

Bonjour fredoanna et bonjour à tous,

Tes PC sont sous windows ? Dans ce cas tu dois définir l'adresse IP de ton PC hôte dans chaque fichier host de chacun de tes pc et tu donnes un nom à ton PC Serveur. Dans mon cas  jcnconsultant
c:/windows/System32/drivers/etc/hosts
Voici un exemple du mien sur chacun des PC's de mon réseau. J'en ai 3 :
L'adresse IP est celle de ton PC serveur

192.168.1.5 jcnconsultant

Bien entendu, le nom jcnconsultant n'est pas sorti d'un chapeau. Il est défini dans le fichier httpd.conf d'Apache

ServerName 192.168.1.5:80

et dans le fichier httpd-vhosts.conf

NameVirtualHost 192.168.1.5

############ Site JCN Test

<VirtualHost 192.168.1.5>
  ServerAdmin tonadressemail.domaine
  ServerName jcnconsultant
  DocumentRoot "d:/home/sites/www.jcnconsultant/web"
  <Directory "d:/home/sites/www.jcnconsultant/web">
    Options Indexes FollowSymLinks +Includes
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  ScriptAlias /cgi-bin/ "d:/home/sites/www.jcnconsultant/web/cgi-bin/"  
  <Directory "d:/home/sites/www.jcnconsultant/web/cgi-bin">
    AllowOverride All
    Order allow,deny
    Allow from all
    Options +Includes
  </Directory>
</VirtualHost>

A ta disposition pour plus de détails.
Bien cordialement.
Jean-Claude l'ancien

#4 Re : Forum Général PHP » Synchronisation d'un menu entre deux sites » 16-09-2010 16:17:10

C'est la fonction http_fetch_url, sur premier-site, qui récupère l'information au travers de la fonction PHP curl sur second-site

Voir mon script au début de cette discussion

Cordialement

#5 Re : Forum Général PHP » Synchronisation d'un menu entre deux sites » 16-09-2010 16:17:10

Re-bonjour Alnoss,

De nouvelles précisions :
1° Je ne peux pas faire un include, il me semble, car je suis sur deux sites différents premier-site et second-site qui sont hébergés chez deux hébergeurs différents...
2° Quand je me connecte sur second-site l'information indiquant que je suis connecté apparait sur second site ce qui est normal et doit apparaitre aussi si je me rends sur premier-site C'est le but de mon script originel.
3) Une fois connecté sur second-site, le tableau $droits_accès, au travers de la session ainsi ouverte, est rempli faisant que, suivant la personne connectée, $droits_acces['Administrateur'] et $droits_acces['Utilisateur Adhérent'] sont mis à la valeur 1, le nom de l'adhérent est lui dans la variable $name

Voilà comment ma session est remplie :

[code: php]
        $_SESSION["valid"]=$valid;
    $_SESSION["username"]=$username;
    $_SESSION["name"]=$name;
    $_SESSION["droits_acces"]=$droits_acces;
    $_SESSION["compostage"]=$date_maj;

[/code]

As-tu une réponse à ma question "Est ce bien du code interprété que je récupère sur second-site.net et non du code PHP brut dans ma variable $content après l'exécution de CURL ?

Merci encore de te pencher sur mon problème.
Jean-Claude l'ancien

#6 Re : Forum Général PHP » Synchronisation d'un menu entre deux sites » 16-09-2010 16:17:10

Bonjour à tous et merci Alnoss pour cette réponse qui demande de ma part quelques précisions.

Quand dans mon script je récupère au travers de la variable $content mon menu d'après login entre les commentaires
[code: html]

<!-- Start login menu -->
<!-- End of start login menu -->
[/code]

C'est bien du code interprété que je récupère sur second-site.net et non du code PHP brut ? Dans ce cas à quoi servira la récupération des variables utilisées pour la détermination du menu ?
Par contre, si c'est du code PHP brut là je te rejoins,mais je ne vois pas comment récupérer ma variable $droits_acces au travers de la fonction PHP curl ?

En exemple le code PHP du menu placé entre les deux commentaires et placé sur second-site.net :
[code: php]
<div id="topsection1">
    <div class="menu-haut">
    <?php
    if(isset($droits_acces['Administrateur'])&& $droits_acces['Administrateur'])
        {
    ?>
    <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/gestion/index.php" class="lien-admin" onmouseover="dropdownmenu(this, event, 'anylinkmenuA')">ADMINISTRATION</a>
    <?php
        }
    if((isset($droits_acces['Administrateur'])&& $droits_acces['Administrateur']) || (isset($droits_acces['Utilisateur Adhérent'])&& $droits_acces['Utilisateur Adhérent']))
        {
    ?>
      |  <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/membres/index.php" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuB')">MY ACCOUNT</a>  |  <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/resource_center/all_doc.php" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuF')">DOWNLOADS</a>  |  <a href="/gestion/logon.php?cmd=logout" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuC')">LOGOFF</a><br /><?php if(isset($name) && $name){echo "<span style=\"color:#FFFFFF\">Connected as ".$name."</span>";} ?>
    <?php
        }
    else
        {
    ?>
    <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/gestion/logon.php?title_page=Member login" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuD')">MEMBER LOGIN</a>  |  <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/create.php" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuE')">CREATE AN ACCOUNT</a>  |  <a href="<?php echo "http://".$_SERVER["SERVER_NAME"]; ?>/resource_center/all_doc.php" class="lien-haut" onmouseover="dropdownmenu(this, event, 'anylinkmenuF')">DOWNLOADS</a>  |  <br />
    <?php
        }
    ?>
    </div>
    <div class="logo"><a href="/index.php"><img src="/images/p_tr.gif" style="border:0px;width:160px;height:50px;" alt="" /></a></div>
</div>

[/code]

Merci encore pour ton aide Alnoss  ou vos aides.

Jean-Claude l'ancien

#7 Re : HTML, xHTML CSS » Comment réaliser un rectangle à coins arrondis sans images ? » 15-09-2010 17:04:45

Re-bonjour,

Oui Gemmenco cette solution permet de choisir les coins à arrondir...
Il y a de nombreux exemples sur le site...

Jean-Claude l'ancien

#8 Re : HTML, xHTML CSS » Comment réaliser un rectangle à coins arrondis sans images ? » 15-09-2010 17:04:45

Gemmenco bonjour,
Voilà un site, en anglais, qui te permettra de réaliser des coins arrondis simplement : http://www.curvycorners.net/
Ca fonctionne sous IE6, IE7, IE8, Firefox, Google Chrome et safari.
Ca utilise du CSS et du Javascript pour effectuer des simulations sur les browsers non compatibles.
Je l'utilise sur nombre de mes sites.

Bon courage.
Bien cordialement.
Jean-Claude l'ancien

#9 Forum Général PHP » Synchronisation d'un menu entre deux sites » 16-09-2010 16:17:10

jcnconsultant
Réponses : 6

Bonjour à tous.

J'ai aujourd'hui deux sites avec deux noms de domaine différents. Soit premier-site.net et second-site.net. Ces deux sites appartiennent au même propriétaire.
Le site second-site.net possède des menus dynamiques qui sont modifié par une administration sur ce site. C'est le site "Maitre"
Pour être en synchronisme parfait, grâce au script suivant, je récupère ces différents menus encadrés par des commentaires. Dans mon exemple le site maitre :


<!-- Start login menu -->
<!-- End of start login menu -->
 

Le script sur le site "Esclave"

<?php
function http_fetch_url($url, $timeout = 10, $userpwd = '')
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    if ($userpwd) {
        curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
    }
    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

// Get the login menu
if (($content = http_fetch_url('http://second-site/index.php', 10, 'utilisateur:mot_de_passe')) === FALSE)
  {
      die("An error has been found");
  }
else
  {
      if (eregi("<!-- Start login menu -->(.*)<!-- End of start login menu -->", $content, $out))
      {      
        echo $out[0];
      }
  }
?>
 

Tout cela fonctionne parfaitement. Sauf, et là est mon problème, quand ce menu est un menu de login qui change une fois la connexion effectuée sur le site second-site.net

Avant login : connexion | Inscription |

Si je veux récupérer le menu qui a changé et qui devrait être :

Après login : Administration  | Espace Memebres | Déconnexion

Je ne le récupère jamais et je conserve    connexion | Inscription |

Je soupçonne un problème de session mais je ne sais comment le résoudre.
Quelqu'un a-t-il une idée, une piste vers laquelle je pourrai aller ?
Je remercie tous ceux qui voudront bien me répondre et.. les autres pour leurs encouragements.

Jean-Claude l'ancien

Pied de page des forums

Propulsé par FluxBB