Aller au contenu

Greywolf

Membres
  • Compteur de contenus

    9 320
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par Greywolf

  1. et un tracert vers cette même adresse ? ça sent à plein nez le routeur qui patine dans la choucroute entre toi et le site voila.fr
  2. http://ftpperso.free.fr/ non?
  3. sur XP Pro apparemment passer la clé EnableIPRouter à 1 HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Tcpip \Parameters pour XP Home aucune idée... http://www.windowsnetworking.com/articles_...s/w2kprout.html pour le WINS, il faut en effet une version serveur (ou un Linux ) sinon il y a toujours la possibilité du fichier lmhosts
  4. ralala trois réponses à côté Heureusement qu'il existe encore des gens qui lisent les posts avant de répondre
  5. Les PC reliés au switch accède à 192.168.1.0/24 puisque c'est par là qu'ils ont accès à internet (DNS 192.168.1.1 route par défaut 192.168.0.1 qui possède une route par défaut via 192.168.1.1). Le pont réseau peut peut-être fonctionner (bien que les tentatives sous windows soient souvent infructueuses). Le réseau 192.168.1.0/24 ne sait pas comment accéder au réseau 192.168.0.0/24 On peut conserver cet adressage et créer une route sur 192.168.1.1 qui redirige les requêtes vers 192.168.0.0/24 via 192.168.1.4 (ou créer cette route sur chaque PC du réseau 192.168.1.0) (+ activer le routage IP sur 192.168.1.4) netbios fonctionnant par diffusion (et étant donc limité à son sous-réseau), un serveur WINS serait le bienvenu ou 192.168.1.4 fait maître explorateur sur les 2 réseaux.
  6. http://forum.zebulon.fr/index.php?showtopic=130846
  7. chmod 000 c'est violent, personne n'a plus le droit de lire, écrire, exécuter le fichier tu ne voulais pas faire un umask 000 plutôt ? (ou un chmod 777 voire 644?)
  8. branchement en ethernet, carte réseau configurée en adressage automatique: rien à faire (mis à part brancher le câble RJ45)
  9. Greywolf

    Stop C0000221,

    euh dites.... windows ne démarre pas, comment faire "Démarrer => Exécuter" -solution 1: trouver un CD de XP Home et tenter une copie de la dll via la console de récupération -solution 2: démarrer sur un LiveCD linux proposant l'écriture sur ntfs (la dernière Knoppix par exemple) et copier la dll
  10. Greywolf

    Virtual PC 2007 - Ubuntu

    sinon il y a virtualBox qui est sympathique dans le genre http://www.virtualbox.org/
  11. le mode routeur de la freebox est-il bien activé?
  12. Bonjour, l'adresse FTP et le nom de domaine http pointe-t-elle vers la même adresse IP? essayer en ligne de commande (démarrer=>exécuter=>cmd) ping nom_de_domaine_http ping nom_de_domaine_ftp comparer les adresses IP : aaa.bbb.ccc.ddd
  13. STP: Shielded Twisted Pair UTP: Unshielded Twisted Pair sont deux catégories de câble réseau : 8 câbles enroulées 2 à 2 en 4 apires pour limiter les interférences électromagnétiques, STP est blindé UTP ne l'est pas FTP, je ne connaissais pas, mais c'est Foiled Twisted Pair http://fr.wikipedia.org/wiki/Paire_torsad%C3%A9e
  14. sur easyphp (donc wamp), on doit en effet activer l'extension mysql.so dans php.ini
  15. Sujet fermé. Merci de bien vouloir consulter la charte du forum.
  16. Salut, le pont réseau ne semble pas fonctionnel. La connexion à la livebox se fait-elle en DHCP ou non? Y-a-t-il un filtrage sur les adresses MAC sur la livebox (probablement si tu es en wifi)? quelle est l'adresse MAC de ton bridge? si tu sniffes les paquets émis par ton PC ou ta machine virtuelle, quelle est l'adresse MAC associée aux paquets? as tu moyen d'essayer ce type de connexion de ta machine virtuelle à ton réseau par une interface filaire?
  17. ben en fait tu tentes de faire un ping vers une adresse non routable. Ton routeur te renvoie un ICMP type 3 code 13 puisque les RFC interdisent de router ce type d'adresse.
  18. Salut, qu'est ce qui te fait croire que cette adresse est sur ton LAN? la classe 10.0.0.0/8 est en effet réservé aux gros LAN. Sur quelle interface sont arrivés ces paquets? l'adressage 10.59.0.0/16 est souvent utilisée dans la configuration par défaut d'OpenVPN. As tu utilisé ce soft? un soft de virtualisation quelconque créant des interfaces TUN/TAP ?
  19. bingo! en effet, beaucoup de données étaient envoyées au navigateur. En les regardant, il s'avérait qu'ils contenaient des messages d'erreurs en rapport avec la fonction fprintf... En re-regardant le code ci-dessus, l'erreur saute maintenant aux yeux: fprintf attendait 9 arguments séparés par des tabulations et je ne lui en fournissait que 7 Comme quoi sniffer les paquets, ça a du bon. Merci beaucoup. J'ai fait une refonte entière du code source selon tes conseils et j'obtiens ces performances Avant, avec 1 seul analyseur sélectionné (~100000 entrées / analyseur), la requête mettait entre 15 et 20 minutes à apparaitre Maintenant, avec 8 analyseurs sélectionnées, la requête met : Temps d'exécution du script : 19.618790149689 secondes c'était donc bien le développeur qui codait avec ses pieds (gauche de surcroît )
  20. bon, j'améliore doucement les choses. Je stocke la requête construite pour chaque analyseur dans une variable de session dont je récupère la partie WHERE .... dans le script jpgraph et en fonction des choix de l'utilisateur, je fais les SELECT qui vont bien. Du coup, j'ai mis de côté la fonction FetchAllData() pour réaliser un while ($row = mysql_fetch_array($mysql_result, MYSQL_ASSOC)) { fprintf($fp,"%s\t%s\t%s\t%s\t%s\t%.3f\t%.3f\t%.3f\t%s\n", \ $row["travel_date"],$row["travel_month"],$row["travel_type"],$row["section_type"],\ $row["my_hour"],$row["count"],$row["period"]); array_push($data,$row["count"]); } $mysql_result est issue de mysql_query($query); qui est exécutée si il existe des enregistrements correspondant aux critères (SELECT COUNT) Donc cette boucle while est censée m'écrire dans un fichier txt en local sur le serveur les différentes valeurs retournées par la requête et remplir un tableau de data pour une colonne en particulier. Si je ne commente pas la fonction fprintf, je fais planter mon navigateur La charge en mémoire virtuelle ne cesse d'augmenter jusqu'à faire planter le navigateur. Le php étant exécuté côté serveur pourquoi la charge du client augmente-t-elle?
  21. :-/ plusieurs variables de session font swapper mon serveur... m'en vais regarder du côté des vues avec une nouvelle requête mysql
  22. pour la même requête, je suis passé de + de 15 minutes à 30 secondes je vais regarder du côté du resultset (?). Pour jpgraph, l'étape 4 décrite dans mon premier post est la création du formulaire pour l'utilisateur: - choix du type de graphique - choix des abscisses à représenter - choix des analyseurs et, in extenso, choix du ou des polluants associés à tracer - validation et envoi au script jpgraph par POST Au tout début, j'ai un peu honte de le dire, j'avais explosé mon tableau de résultats en une chaîne de caractère avec implode pour les coller dans le champ value du formulaire.... j'ai rapidement abandonné au vu des performances réseau nécessaires: balancer 150M de data au client pour qu'il les renvoie au serveur par la méthode POST ce n'était pas génial. Selon la doc de jpgraph, soit les data sont statiques (on oublie), soit elles sont extraites d'une BDD par le script de création jpgraph soit elles sont envoyées par POST. Comme je n'avais pas envie de refaire une requête mysql pour récupérer les data précédemment extraites, j'ai pensé aux variables de session... Sinon comme alternative, je peux peut-être stocker les requêtes mysql créées par les choix de l'utilisateur dans une variable de session et refaire un mysql_query dans le script jpgraph afin de récupérer les data à tracer. L'avantage c'est que la requête mysql sera dans le cache et sera censément traitée rapidement. Je vais tenter les deux approches.
  23. <?php session_start(); ini_set('error_reporting', E_ALL); ini_set('display_errors', TRUE); ini_set('max_execution_time',0); require_once 'Math/Stats.php'; include 'scr/fetchdata.php'; $temps_debut = microtime_float(); //Rappel des choix postés par l'utilisateur ... //connexion à la BDD $hote="localhost"; $utilisateur=$_SESSION['login']; $password=$_SESSION['password']; $connexion = mysql_connect($hote,$utilisateur,$password); //si la connexion est active et si au moins un analyseur a été choisi if ($connexion>0 && isset($_POST['analyseur'])) { mysql_select_db("mabase") or die("Could not select database"); //écriture d'une div contenant un tableau //Construction d'une requete par analyseur foreach ($analyseur as &$value) { //Sélection des champs a extraire en fonction de l'analyseur switch ($value) { case a: $champs="......"; case b: ... } //requete commune $query = "SELECT $champs FROM `$value` INNER JOIN `urban_section` ON `$value`.`urban_section_idurban_section` = urban_section.idurban_section INNER JOIN `travel_date` ON `$value`.`travel_date_idtravel_date` = travel_date.idtravel_date INNER JOIN `travel` ON `$value`.`travel_idtravel` = travel.idtravel WHERE `valid` = '1'"; //Construction de la requ?te en fonction des choix de l'utilisateur //rajout de clauses WHERE //nom de fichier $filename ="requete_".$value.".txt"; //Récupération des résultats $mysql_result = mysql_query($query); //création d'un tableau associatif $assoc_result qui comporte $nrows lignes $assoc_result=array(); $nrows=fetchAllData($mysql_result,$assoc_result); mysql_free_result($mysql_result); jusqe là ça va à peu près, la fonction fetchAllData est gourmande en mémoire mais ça passe plutôt pas trop mal //Création d'un fichier de résultat $repertoire = "uploadtemp/"; if (!($fp = fopen("$repertoire$filename", 'w'))) { return; } //Si la requete retourne des résultats, on extrait des arrays du tableau associatif pour chaque analyseur if (isset($nrows) && $nrows != 0) { switch($value) { case a: $res_a_date = $assoc_result['TRAVEl_DATE']; .... fprintf($fp,"date\tMois\tType trajet\ttron?on\theure\tNOx\tNO\tNO2\tperiodes\n"); for ($i = 0; $i < $nrows; $i++) { fprintf($fp,"%s\t%s\t%s\t%s\t%s\t%.3f\t%.3f\t%.3f\t%s\n",$res_a_date[$i],$res_a_month[$i],$res_a_type[$i],$res_a_section[$i],$res_a_hour[$i],$res_a_NOx[$i],$res_a_NO[$i],$res_a_NO2[$i],$res_a_period[$i]); } fclose($fp); $s = new Math_Stats(); $s->setData($res_a_NOx); $mean = $s->mean(); $median = $s->median(); $quartiles = $s->quartiles(); $min = $s->min(); $max = $s->max(); unset($s); printf ('<tr><td>%s</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td>%.3f</td><td><a href="uploadtemp/%s">%s</a></td></tr>', $value, $mean, $median, $quartiles[25], $quartiles[75], $min, $max, $quartiles[10], $quartiles[90],$filename,$value); break; case b: .... } unset($assoc_result); } else { echo '<tr><td>'. $value .'</td><td>Aucune valeur pour l\'analyseur ' . $value . '</td></tr>'; unset ($assoc_result); } //fin de la boucle foreach($analyseur as &$value) } //fermeture de la div echo '</table></div>'; //fin de la condition if ($connexion >0) } else { echo "Impossible de se connecter à la base de données !"; } Si je laisse la partie dans laquelle j'explose $assoc_result en plusieurs arrays $res_[nom_de_l'analyseur]_[nom_du_champ] le temps de traitement explose Peut-être y-a-t-il des grosses erreurs dans ce code? l'utilisation de boucle foreach et de switch n'arrange probablement pas le système. Y-a-t-il un moyen plus simple de récupérer les résultats d'une requête mysql non pas en ligne mais en colonne? faire une requête par champ plutôt qu'une seule requête sur plusieurs champs? edit: Si je n'explose plus $assoc_result en petits tableaux, ça va tout de suite beaucoup mieux. J'ai besoin tout de même d'accéder aux résultats extraits pour chaque analyseur pour le script de création de graphique jpgraph. J'ai donc associé dans ma boucle foreach($analyseur as &$value) le tableau $assoc_result à une variable de session $_SESSION['nom_de_l'analyseur'] il faudrait que j'accède facilement à $_SESSION['nom_de_l'analyseur']['type_de_polluant'][$i] Les variables de session sont-elles faites pour trimbaler de grosses quantités de data?
  24. Hello Kewlcat, merci de ta réponse et des pistes indiquées. En fait la page n'est reçue (en fait affichée par le navigateur) qu'au bout de 15 minutes :-/. Le navigateur reste sur le formulaire initial et l'indicateur de chargement tourne, tourne, tourne... la configuration est celle par défaut, je vais essayer de le désactiver pour voir si ça change quelquechose. Comment puis-je voir de potentielles erreurs de Content-Length? (en sniffant les headers HTTP ?) je vais essayer de logger un maximum de choses dans syslog, la page ne s'affichant pas au fur et à mesure, je vais peut être commenter encore des bouts de code pour espérer trouver où cela coince (si ça vient du code) :-/ edit: ce qui semble prendre du temps, c'est la manipulation de mon tableau associatif, je mets mon code dans un autre post. Je vais utiliser wireshark sur le serveur pour voir ce qui est envoyé et quand c'est envoyé edit: bon rien de transcendant apparemment, 8 paquets envoyés pour le formulaire, la réponse vient plus de 15 minutes après Pour MyISAM, on me disait que c'était plus rapide pour une base destinée essentiellement à des requêtes SELECT.
  25. Bonjour, Dans le cadre du boulot, j'ai créé une base de données sous MySQL v5 type MyISAM associé à Apache2 (mpm-prefork) avec php5 en module, le tout sous Debian Testing sur un AMD 64 3500+ 1Go DDR-RAM. La BdD grossissant de jour en jour je suis confronté à des problèmes de performances lorsque l'on réalise des requêtes qui retournent beaucoup de résultats (> 100000) avec un processus Apache2 qui tourne sans arrêt. Ma BdD consiste en 15 tables correspondant chacune à un analyseur; chaque table comporte entre 10 et 20 champs selon les analyseurs; + 3 tables d'identifiant divers (date, lieu,...) exportées en clés étrangères dans les 15 premières. L'application PHP développée consiste en authentification de l'utilisateur avec stockage des infos de login/pass dans des variables de session formulaire de sélection pour une construction personnalisée des requêtes mysql à réaliser (Cf mon précédent topic) construction de la requête en fonction des choix récupérées par la méthode POST, interrogation de la base MySQL Calculs sur les résultats retournés avec des fonctions statistiques fournies par Stats.php du projet PEAR et écriture dans un fichier texte sur le serveur des data extraites transformation des résultats fournis en ligne par Mysql pour les récupérer en colonne * création d'un formulaire pour tracer des graphiques à partir des résultats récupérés à l'aide de la librairie Jpgraph* tout ceci marche pas trop mal du moment que la requête n'englobe pas trop d'analyseurs (boucle foreach sur chaque analyseur sur les étapes 2 et 3) ou si la requête est limitée à un analyseur et quelques dates/lieux/.... Au niveau optimisation, je me suis inspiré de ce site http://www.onlamp.com/pub/a/onlamp/2004/02...amp_tuning.html j'ai mis les grosses requêtes en cache SQL; lorsque je réalise une grosse requête directement via le client mysql, celle ci met moins d'une seconde à sortir (et moins de 0.1 seconde quand il y a un hit dans le cache) j'ai créé des index sur les champs utilisés dans les clauses WHERE des requêtes mysql j'ai compilé un accélérateur php basé sur Zend (eaccelerator) j'ai modifié les paramètres mpm_perfork comme suit <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 10 MaxRequestsPerChild 100 </IfModule> Je pense avoir deux goulots d'étranglements dans mon appli PHP au niveau des étapes 3 et 4 (celles avec les *) -mysql_fetch_array retourne les éléments du tableau de résultat ligne par ligne et moi je les veux colonne par colonne; j'ai donc une fonction fetch_AllDataqui lit ligne à ligne le tableau de résultat et fait une rotation à 90° de tout ce monde là dans un tableau associatif avec le noms de mes champs en en-tête. - le tableau associatif est ensuite éclaté en autant de variables de session qu'il y a de champs sélectionnés (multipliés par le nombre d'analyseurs choisis) pour pouvoir les passer au script jpgraph J'ai dans un premier temps commenté cette dernière partie (l'étape 4 n'est donc pas réalisée) et j'ai inséré des fonctions microtime en début et fin de mon script php pour évaluer son temps d'éxécution global: Sur une requête globale sur 1 table (avec des inner join sur les 3 tables date/lieu/...), le script php m'indique un temps d'exécution de 3.3 secondes dont 1.5 seconde pour la fonction fetch_Alldata. sauf que avant de voir ce score s'afficher sur mon navigateur, j'ai du patienter 10-15 minutes :-/ Pendant ce temps, un processus apache2 occupe 99,9% de la charge CPU avec une charge mémoire comprise entre 10 et 20% (infos données par top) Si je stoppe le processus apache en insérant une clause max_execution_time dans le script php, j'obtiens la même page beaucoup plus rapidement mais avec une erreur de temps d'exécution dépassé (sauf que tout y est...) si certains ont des idées sur la question, parce que là..... merci
×
×
  • Créer...