[RESOLU] Comment faire du multithreading avec ma boucle While ?

Eléphant du PHP | 137 Messages

25 mai 2020, 12:13

Bonjour à tous.

Ma boucle while ci-dessous, me permet de génerer 1000000 de numéro. Mais le souci, c'est que quand on lance un premier processus de génération, puis un 2ème puis après un 3ème, le temps total d'exécution du 2ème est plus long que le temps normal du 1er processus et le temps d'exécution du 3ème processus est encore plus long que celui du 2ème processus.

Code : Tout sélectionner

$i = 0; while($i<=$max) { $i++; echo $i. "<br /> "; }

Comment donc modifier mon bout de code de sorte à faire exécuter les processus en parallèle sans que le temps d'exécution de l'un n'agit pas ou ne ralentit pas l'autre ???

Merci de m'aider s'il vous plaît.

Avatar du membre
Mammouth du PHP | 1609 Messages

25 mai 2020, 13:53

Salut, utilises tu une session php dans le code ? parce que je pense que dans ce cas un seul script peut tourner à la fois, le suivant à besoin que la session soit libérée par le premier et ainsi de suite.
Développeur web depuis + de 20 ans

Mammouth du PHP | 1967 Messages

25 mai 2020, 14:43

je pense que tu peux avant tout optimiser ton script.

que fais tu du résultat ?
générer un fichier d'un million de chiffre incrémenté prends 300 milliseconde alors que les afficher ??? aucune idée le script tourne toujours .
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 137 Messages

25 mai 2020, 17:23

Mais comment l'optimiser via un exemple de code sachant que une fois généré, ceux-ci sont stockés et récupérable dans un Fichier ".txt" avec la fonction PHP fputcsv ????

Je sollicite votre aide car la lenteur me pose vraiment problème.

Aidez-moi svp avec un exemple de code pour optimiser ma boucle "while" afin d'améliorer la lenteur et enregistrer la génération des numéros dans un fichier txt.

Merci d'avance.

Mammouth du PHP | 1967 Messages

26 mai 2020, 09:24

$i = 0;
$string = '';
while ($i < 1000000) {
	$string .= $i . '<br>';
	$i++;
}
file_put_contents('loop3.txt', $string);
ce code as pris 300 ms sur ma machine
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 137 Messages

26 mai 2020, 11:40

OK, je vais l'essayer et voir

Eléphant du PHP | 137 Messages

26 mai 2020, 12:41

Le souci c'est que le fichier une fois généré, contient des numéros qui au lieu de s'aligner ligne par ligne, s'affiche plutôt sur une seule et même ligne avec à chaque fois la balise <br> comme ceci:

Code : Tout sélectionner

0<br> 1<br>3<br>......
Même quand je modifie la balise "<br>" par "\n". C'est pareil, il n'y a toujours pas retour à la ligne.

Comment donc corriger mon bout de code de sorte à ce qu'il prenne en compte le retour à la ligne ???

Mammouth du PHP | 1967 Messages

26 mai 2020, 13:37

$i = 0;
$string = '';
while ($i < 1000000) {
	$string .= $i . "\r\n";
	$i++;
}
file_put_contents('loop3.txt', $string);
avec les caractère spéciaux comme \r ou \n il faut des doubles quotes pour que php les interprète en tant que tel
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 137 Messages

26 mai 2020, 16:35

OK. Merci beaucoup