[PHP] Optimiser mon bout de code?
reaverlost
Messages postés
150
Date d'inscription
Statut
Membre
Dernière intervention
-
mpmp93 Messages postés 6648 Date d'inscription Statut Membre Dernière intervention -
mpmp93 Messages postés 6648 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une page qui contient une liste de 396 liens d'imprimantes.
En cliquant sur ces liens, on accède aux détails de l'imprimante (nom, ville, adresse IP...)
Je dois récupérer le code source de la première page afin de récupérer le nom des imprimante, puis récupérer le code source du détail de l'imprimante pour récupérer son IP.
Jusque la mon code fonctionne.
Mais je dois faire un file_get_contents 396 fois, ce qui me donne un temps d'attente beaucoup trop long, et fatalement une fatal error.
M'est-il possible d'optimiser mon code? Ou y'a t'il une autre façon de faire?
Voici mon code :
Merci à vous :)
J'ai une page qui contient une liste de 396 liens d'imprimantes.
En cliquant sur ces liens, on accède aux détails de l'imprimante (nom, ville, adresse IP...)
Je dois récupérer le code source de la première page afin de récupérer le nom des imprimante, puis récupérer le code source du détail de l'imprimante pour récupérer son IP.
Jusque la mon code fonctionne.
Mais je dois faire un file_get_contents 396 fois, ce qui me donne un temps d'attente beaucoup trop long, et fatalement une fatal error.
M'est-il possible d'optimiser mon code? Ou y'a t'il une autre façon de faire?
Voici mon code :
$nb = 0; $link = array (); set_time_limit (10); $var = file_get_contents('http://wsdscer128d4.sddc:10080/cgi-bin/rsdadmin/printers.cgi'); preg_match_all ('#<a href="(.+)" target="_blank">(.+)</a>#i', $var, $liens); foreach ($liens[0] as $complet) { $texte = $liens[2][$nb]; if ($texte == "*") { $nb++; } else { $link[$nb] = 'http://wsdscer128d4.sddc:10080/cgi-bin/rsdadmin/printers.cgi?action=upd&name='.$texte; $nb++; } } $nbr = 0; foreach ($link as $imp) { if ($to = file_get_contents ($imp)) { preg_match_all ('#<input type="text" name="Printer_Name" value="(.+)" size="10" readonly class="ro"#i', $to, $nom_imprimante); preg_match_all ('#<input type="text" name="Description" value="(.+)" size="(.+)" >#i', $to, $description); preg_match_all ('#<input type="text" name="Status" value="(.+)" size="5" readonly class="ro">#i', $to, $status); preg_match_all ('#<input type="text" name="Destination_URI" value="socketapi://(.+)" size="31" >#i', $to, $lien); foreach ($nom_imprimante[0] as $final) { $nom = $nom_imprimante[1][$nbr].'<br />'; echo 'Imprimante : <strong>'.$nom.'</strong>'; } foreach ($description[0] as $final2) { $desc = $description[1][$nbr].'<br />'; echo $desc; } foreach ($status[0] as $final3) { $stat = $status[1][$nbr].'<br />'; echo $stat; } foreach ($lien[0] as $final4) { $ip = $lien[1][$nbr].'<br /><br />'; echo $ip; } // echo $nom.' '.$desc.' '.$stat.' '.$ip; } }
Merci à vous :)
A voir également:
- [PHP] Optimiser mon bout de code?
- Code ascii - Guide
- Optimiser son pc - Accueil - Utilitaires
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
2 réponses
Bonjour,
Concernant: "Mais je dois faire un file_get_contents 396 fois, ce qui me donne un temps d'attente beaucoup trop long, et fatalement une fatal error. "
OUI
Simplement en créant une table en base de données,
puis en mettant le résultat du file_get_contents avec une date de création
faites ça par paquets de 10 ou 20....
Exécutez le script une trentaine de fois jusqu'à ce que vous ayez chargé toute la base....
Ensuite, plus besoin de faire file_get_contents vu que vous avez le résultat en table....
Si les paramètres d'une imprimante change, vous refaites un file_get_contents et mettez à jour les données en table de cette imprimante....
moi c'est comme ça que je vous les choses
A+
Concernant: "Mais je dois faire un file_get_contents 396 fois, ce qui me donne un temps d'attente beaucoup trop long, et fatalement une fatal error. "
OUI
Simplement en créant une table en base de données,
puis en mettant le résultat du file_get_contents avec une date de création
faites ça par paquets de 10 ou 20....
Exécutez le script une trentaine de fois jusqu'à ce que vous ayez chargé toute la base....
Ensuite, plus besoin de faire file_get_contents vu que vous avez le résultat en table....
Si les paramètres d'une imprimante change, vous refaites un file_get_contents et mettez à jour les données en table de cette imprimante....
moi c'est comme ça que je vous les choses
A+