Page 1 sur 1

Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 26 mai 2020, 20:35
par chegmarco
BONSOIR.

Je ne sais pas si c'est moi qui code mal mais vraiment la lenteur de mon la code avec la Librairie Libphonenumber-For-PHP (https://github.com/giggsey/libphonenumber-for-php) + le formatage de mes numéros selon le pays est d'un casse-tête qui ne dit même pas son nom.

En fait, j'essaie de générer une liste de numéro parsés avec la Libphonenumber-For-PHP (https://github.com/giggsey/libphonenumber-for-php) en me servant de la boucle while.

Avec une simple boucle while de génération de Numéros sans inclure la Librairie Libphonenumber-For-PHP (https://github.com/giggsey/libphonenumber-for-php) tel que le code ci-dessous, il prend avec succès, seulement quelques Millisecondes pour générer une liste de 1000000 de Numéros sans problème.

Code : Tout sélectionner

$i = 900000000; $iEnd = $i + 1000000; $string = ''; while ($i <= $iEnd) { $string .= "+225". $i."\r\n"; $i++; } file_put_contents('generated.txt', $string);

Mais LE PLUS GROS SOUCI, c'est lorsque j'inclus la Librairie Libphonenumber-For-PHP (https://github.com/giggsey/libphonenumber-for-php) exactement comme dans le code suivant, cela fait une éternité avant de se générer:

Code : Tout sélectionner

// chargement de la librairie require_once("vendor/autoload.php"); // instanciation de la class PhoneNumberUtil $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); $i = 03000000; $iEnd = $i + 1000000; $string = ''; while ($i <= $iEnd) { $string .= $i."\r\n"; $parse = $phoneUtil-]parse($string, "CI"); $isValid = $phoneUtil-]format($parse, \libphonenumber\PhoneNumberFormat::E164); // Format E164 $i++; } file_put_contents('generated.txt', $isValid);

Vraiment, j'implore votre clémence, aidez-moi s'il vous plaît à corriger ma boucle while de sorte à ce qu'elle genère TRES RAPIDEMENT les 1000000 Numéros parsés avec la Librairie Libphonenumber-For-PHP (https://github.com/giggsey/libphonenumber-for-php).

Re: Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 26 mai 2020, 21:51
par @rthur
Tu prend une librairie PHP composée de 1107 fichiers et qui pèse 17 Mo, tu y fais appel 1 million de fois et tu trouves ça beaucoup plus lent qu'une simple boucle while... bah... c'est normal :-D

Soit tu essaye d'optimiser la librairie concernée, mais bon courage pour ça.
Soit tu recodes la partie de cette librairie qui t'intéresse pour ne garder que le strict nécessaire.

Re: Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 26 mai 2020, 22:37
par chegmarco
Ça ne m'aide en rien. En fait, je ne comprends pas. J'ai besoin d'aide

Re: Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 26 mai 2020, 22:46
par Saian
Tu ne peux pas faire aller la librairie plus vite qu'elle ne va, c'est comme ça, sauf à réécrire son code ou à écrire le tien.

En revanche j'ai l'impression qu'il y a un problème de logique dans ton code.
Tu passes une chaine toujours plus longue à la méthode parse. ($string .= $i."\r\n";). Tu as peut être ici une source à cette lenteur, ça dépend de ce que fait la méthode avec la chaine que tu lui passes.
Et tu enregistres $isValid avec le file_put_contents alors que la variable ne contient que le dernier numéro...
De plus je ne connais pas la syntaxe -] chez moi c'est -> mais j'ai peut être raté une innovation php avec mes vieilles habitudes. ^^

Re: Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 27 mai 2020, 09:29
par chegmarco
Le code chez moi c'est avec > et non ]. Et il marche très bien sauf que le problème de lenteur se pose toujours. Je ne sais pas à quel moment cette erreur est survenue.

Code : Tout sélectionner

// chargement de la librairie require_once("vendor/autoload.php"); // instanciation de la class PhoneNumberUtil $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); $i = 03000000; $iEnd = $i + 1000000; $string = ''; while ($i <= $iEnd) { $string .= $i."\r\n"; $parse = $phoneUtil->parse($string, "CI"); $isValid = $phoneUtil->format($parse, \libphonenumber\PhoneNumberFormat::E164); // Format E164 $i++; } file_put_contents('generated.txt', $isValid);

Déjà je me demande pourquoi c'est seulement le dernier numéro qui est pris en compte dans la variable isValid ???
Comment traiter tous les numéros De la variable $i inférieurs ou égaux à $iEnd avec le formatage en E164 via la librairie LIBPHONENUMBER-FOR-PHP ???

Aidez-moi à revoir totalement le code svp avec bien sûr un nouvel exemple de code.

Merci d'avance

Re: Aidez-moi svp à corriger la LENTEUR du temps d'exécution de ma boucle while avec la Librairie LIBPHONENUMBER-FOR-PHP

Posté : 27 mai 2020, 13:50
par Spols
On ne connait pas ta librairie, il faut que tu regarde sa doc.

mais a priori essaye ceci
while ($i <= $iEnd) {
$parse = $phoneUtil->parse($i, "CI");
$isValid = $phoneUtil->format($parse, \libphonenumber\PhoneNumberFormat::E164); // Format E164
$string .= $isValid."\r\n";
$i++;
}
c'est ce que souligne Saian