Bonjour à vous.
Ça fait plusieurs jours que je me casse la tête à résoudre ce problème concernant la lenteur d'exécution de mon Code qui est chargé générer des numéros à partir de numéro et de la longueur renseignés depuis le formulaire HTML.
Toujours dans le souci d'accélérer ou de réduire totalement le temps de traitement de la génération des Numéros avec mon Code, j'ai découvert qu'il était possible d'exécuter parallèlement plusieurs tâches avec mon Script PHP ci-dessous qui feraient chacune une partie du traitement. Chacune des tâches générera une partie des numéros totaux qu'est chargé généré le Code normalement. Une fois toutes tâches terminées (générations terminées en plusieurs morceaux), un dernier Script devait automatiquement s'occuper de rassembler tous les numéros générés pour être envoyé au Client via son email récupérée depuis le formulaire HTML.
En fouillant un peu, j'ai découvert qu'il était possible de faire cela avec la Librairie Multithread de PHP nommée "Pthreads" (https://github.com/krakjoe/pthreads):


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
$now = gmdate("D, d M Y H:i:s");
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
 
// force download  
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
 
$filename = "numero.csv";
 
// disposition / encoding on response body
header("Content-Disposition: attachment;filename={$filename}");
header("Content-Transfer-Encoding: binary");
 
ob_start();
$df = fopen("php://output", 'w');
 
// pour mettre un entête sur le CSV
$entetes = ['Numero'];
fputcsv($df, $entetes);
 
// numéro de base
$numero         = (isset($_POST['numField'])) ? $_POST['numField'] : 0;
// longueur souhaité (doit être plus grande que longueur de $numéro)
$longueur_total = (isset($_POST['numLength'])) ? $_POST['numLength'] : 0;
// longueur utilisé en retirant la longueur de base
$longueur       = $longueur_total - strlen($numero);
// calcule de la puissance de 10 en fonction de la longueur souhaité
$max            = pow(10, $longueur);
// affichage du maximun de tour de la boucle
// echo "<h1>$max</h1>";
for ($i = 0; $i < $max; $i++) {
    // différence de longueur
    $diff = $longueur - strlen($i);
    $zero = "";
    for ($a = 0; $a < $diff; $a++) {
        // ajout des zéro devant
        $zero .= "0";
    }
    // concaténation du résultat
    $resultat = $numero . $zero . $i;
    // effacement des zéro
    $zero     = "";
    // affichage du résultat
    $row = [$resultat];
    fputcsv($df, $row);
}
fclose($df);
echo ob_get_clean();
exit(0);
Comment donc utiliser cette librairie "Pthreads" dans mon Code ci-dessus pour décomposer en plusieurs Scripts exécutant des tâches parallèlement pour générer des numéros afin de réduire totalement le temps de traitement de la génération des Numéros pour finalement les envoyer par mail récupérée via les formulaire HTML ???

Merci d'avance.