Accélérer notre script PHP [Résolu]

Signaler
Messages postés
35
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
10 mai 2020
-
Messages postés
28531
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juin 2020
-
Bonjour,

Le code de mon programme est extrêmement long à exécuter, donc pouvez-vous m'aider de sorte à ce qu'il remplisse les mêmes fonctions mais en moins de temps?

P.S. : Mon programme fonctionne de sorte qu'il calcule tous les ratios possible et il va prendre le ratio le plus près du nombre de la variable $recherche. Par la suite, il affiche les nombres qui ont été utilisé pour calculer le ratio.

Voici mon code :

<?php
    function getClosest($search, $arr) {
        $closest = null;
        foreach ($arr as $item) {
            if ($closest === null || abs($search - $closest) > abs($item - $search)) {
                $closest = $item;
            }
        }
        return $closest;
    }
    $array2 = array();
    $valPlusProche = getClosest($recherche, $array2);
    $gear1 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113];
    $gear2 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113];
    $gear3 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113];
    $gear4 = [20, 20, 22, 23, 24, 24, 25, 26, 26, 29, 29, 30, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 37, 39, 40, 41, 42, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 52, 53, 55, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 65, 66, 67, 69, 70, 71, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 85, 87, 89, 89, 90, 91, 92, 93, 93, 95, 97, 98, 99, 100, 101, 103, 103, 107, 109, 111, 113];
    
    $array = array();
    function all($pos1, $pos2, $pos3, $pos4){
        global $array;
        global $gear4;
        global $recherche;
        $recherche = 0.4935278483;
        array_unshift($array, ($pos1/$pos2)*($pos3/$pos4));
        global $valPlusProche;
        $valPlusProche = getClosest($recherche, $array);  
        
    }
    function aff($pos1, $pos2, $pos3, $pos4){
        global $valPlusProche, $gear1, $gear2, $gear3, $gear4, $recherche, $array;
        if($array[0] == $valPlusProche){
            global $calc;
            $calc = "Engrenages ". $gear1[$pos1]. ", ". $gear2[$pos2]. ", ". $gear3[$pos3]. ", ". $gear4[$pos4];
        }
    }

    function affgear3($pos1, $pos2, $pos3, $pos4){
        global $gear1, $gear2, $gear3, $gear4;
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3, $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
        return all($gear1[$pos1], $gear2[$pos2], $gear3[$pos3], $gear4[$pos4]);
        echo aff($pos1, $pos2, $pos3,  $pos4);
    }

    function affgear4($pos1, $pos2, $pos3) {
        global $gear4;
        affgear3($pos1, $pos2, $pos3, 0);
        affgear3($pos1, $pos2, $pos3, 1);
        affgear3($pos1, $pos2, $pos3, 2);
        affgear3($pos1, $pos2, $pos3, 3);
        affgear3($pos1, $pos2, $pos3, 4);
        affgear3($pos1, $pos2, $pos3, 5);
        affgear3($pos1, $pos2, $pos3, 6);
        affgear3($pos1, $pos2, $pos3, 7);
        affgear3($pos1, $pos2, $pos3, 8);
        affgear3($pos1, $pos2, $pos3, 9);
        affgear3($pos1, $pos2, $pos3, 10);
        affgear3($pos1, $pos2, $pos3, 11);
        affgear3($pos1, $pos2, $pos3, 12);
        affgear3($pos1, $pos2, $pos3, 13);
        affgear3($pos1, $pos2, $pos3, 14);
        affgear3($pos1, $pos2, $pos3, 15);
        affgear3($pos1, $pos2, $pos3, 16);
        affgear3($pos1, $pos2, $pos3, 17);
        affgear3($pos1, $pos2, $pos3, 18);
        affgear3($pos1, $pos2, $pos3, 19);
        affgear3($pos1, $pos2, $pos3, 20);
        affgear3($pos1, $pos2, $pos3, 21);
        affgear3($pos1, $pos2, $pos3, 22);
        affgear3($pos1, $pos2, $pos3, 23);
        affgear3($pos1, $pos2, $pos3, 24);
        affgear3($pos1, $pos2, $pos3, 25);
        affgear3($pos1, $pos2, $pos3, 26);
        affgear3($pos1, $pos2, $pos3, 27);
        affgear3($pos1, $pos2, $pos3, 28);
        affgear3($pos1, $pos2, $pos3, 29);
        affgear3($pos1, $pos2, $pos3, 30);
        affgear3($pos1, $pos2, $pos3, 31);
        affgear3($pos1, $pos2, $pos3, 32);
        affgear3($pos1, $pos2, $pos3, 33);
        affgear3($pos1, $pos2, $pos3, 34);
        affgear3($pos1, $pos2, $pos3, 35);
        affgear3($pos1, $pos2, $pos3, 36);
        affgear3($pos1, $pos2, $pos3, 37);
        affgear3($pos1, $pos2, $pos3, 38);
        affgear3($pos1, $pos2, $pos3, 39);
        affgear3($pos1, $pos2, $pos3, 40);
        affgear3($pos1, $pos2, $pos3, 41);
        affgear3($pos1, $pos2, $pos3, 42);
        affgear3($pos1, $pos2, $pos3, 43);
        affgear3($pos1, $pos2, $pos3, 44);
        affgear3($pos1, $pos2, $pos3, 45);
        affgear3($pos1, $pos2, $pos3, 46);
        affgear3($pos1, $pos2, $pos3, 47);
        affgear3($pos1, $pos2, $pos3, 48);
        affgear3($pos1, $pos2, $pos3, 49);
        affgear3($pos1, $pos2, $pos3, 50);
        affgear3($pos1, $pos2, $pos3, 51);
        affgear3($pos1, $pos2, $pos3, 52);
        affgear3($pos1, $pos2, $pos3, 53);
        affgear3($pos1, $pos2, $pos3, 54);
        affgear3($pos1, $pos2, $pos3, 55);
        affgear3($pos1, $pos2, $pos3, 56);
        affgear3($pos1, $pos2, $pos3, 57);
        affgear3($pos1, $pos2, $pos3, 58);
        affgear3($pos1, $pos2, $pos3, 59);
        affgear3($pos1, $pos2, $pos3, 60);
        affgear3($pos1, $pos2, $pos3, 61);
        affgear3($pos1, $pos2, $pos3, 62);
        affgear3($pos1, $pos2, $pos3, 63);
        affgear3($pos1, $pos2, $pos3, 64);
        affgear3($pos1, $pos2, $pos3, 65);
        affgear3($pos1, $pos2, $pos3, 66);
        affgear3($pos1, $pos2, $pos3, 67);
        affgear3($pos1, $pos2, $pos3, 68);
        affgear3($pos1, $pos2, $pos3, 69);
        affgear3($pos1, $pos2, $pos3, 70);
        affgear3($pos1, $pos2, $pos3, 71);
        affgear3($pos1, $pos2, $pos3, 72);
        affgear3($pos1, $pos2, $pos3, 73);
        affgear3($pos1, $pos2, $pos3, 74);
        affgear3($pos1, $pos2, $pos3, 75);
        affgear3($pos1, $pos2, $pos3, 76);
        affgear3($pos1, $pos2, $pos3, 77);
        affgear3($pos1, $pos2, $pos3, 78);
        affgear3($pos1, $pos2, $pos3, 79);
        affgear3($pos1, $pos2, $pos3, 80);
        affgear3($pos1, $pos2, $pos3, 81);
        affgear3($pos1, $pos2, $pos3, 82);
        affgear3($pos1, $pos2, $pos3, 83);
        affgear3($pos1, $pos2, $pos3, 84);
        affgear3($pos1, $pos2, $pos3, 85);
        affgear3($pos1, $pos2, $pos3, 86);
        affgear3($pos1, $pos2, $pos3, 87);
        affgear3($pos1, $pos2, $pos3, 88);
        affgear3($pos1, $pos2, $pos3, 89);
        affgear3($pos1, $pos2, $pos3, 90);
    }

    function affgear2($pos1, $pos2) {
        echo affgear4($pos1, $pos2, 0);
        echo affgear4($pos1, $pos2, 1);
        echo affgear4($pos1, $pos2, 2);
        echo affgear4($pos1, $pos2, 3);
        echo affgear4($pos1, $pos2, 4);
        echo affgear4($pos1, $pos2, 5);
        echo affgear4($pos1, $pos2, 6);
        echo affgear4($pos1, $pos2, 7);
        echo affgear4($pos1, $pos2, 8);
        echo affgear4($pos1, $pos2, 9);
        echo affgear4($pos1, $pos2, 10);
        echo affgear4($pos1, $pos2, 11);
        echo affgear4($pos1, $pos2, 12);
        echo affgear4($pos1, $pos2, 13);
        echo affgear4($pos1, $pos2, 14);
        echo affgear4($pos1, $pos2, 15);
        echo affgear4($pos1, $pos2, 16);
        echo affgear4($pos1, $pos2, 17);
        echo affgear4($pos1, $pos2, 18);
        echo affgear4($pos1, $pos2, 19);
        echo affgear4($pos1, $pos2, 20);
        echo affgear4($pos1, $pos2, 21);
        echo affgear4($pos1, $pos2, 22);
        echo affgear4($pos1, $pos2, 23);
        echo affgear4($pos1, $pos2, 24);
        echo affgear4($pos1, $pos2, 25);
        echo affgear4($pos1, $pos2, 26);
        echo affgear4($pos1, $pos2, 28);
        echo affgear4($pos1, $pos2, 29);
        echo affgear4($pos1, $pos2, 30);
        echo affgear4($pos1, $pos2, 31);
        echo affgear4($pos1, $pos2, 32);
        echo affgear4($pos1, $pos2, 33);
        echo affgear4($pos1, $pos2, 34);
        echo affgear4($pos1, $pos2, 35);
        echo affgear4($pos1, $pos2, 36);
        echo affgear4($pos1, $pos2, 37);
        echo affgear4($pos1, $pos2, 38);
        echo affgear4($pos1, $pos2, 39);
        echo affgear4($pos1, $pos2, 40);
        echo affgear4($pos1, $pos2, 41);
        echo affgear4($pos1, $pos2, 42);
        echo affgear4($pos1, $pos2, 43);
        echo affgear4($pos1, $pos2, 44);
        echo affgear4($pos1, $pos2, 45);
        echo affgear4($pos1, $pos2, 46);
        echo affgear4($pos1, $pos2, 47);
        echo affgear4($pos1, $pos2, 48);
        echo affgear4($pos1, $pos2, 49);
        echo affgear4($pos1, $pos2, 50);
        echo affgear4($pos1, $pos2, 51);
        echo affgear4($pos1, $pos2, 52);
        echo affgear4($pos1, $pos2, 53);
        echo affgear4($pos1, $pos2, 54);
        echo affgear4($pos1, $pos2, 55);
        echo affgear4($pos1, $pos2, 56);
        echo affgear4($pos1, $pos2, 57);
        echo affgear4($pos1, $pos2, 58);
        echo affgear4($pos1, $pos2, 59);
        echo affgear4($pos1, $pos2, 60);
        echo affgear4($pos1, $pos2, 61);
        echo affgear4($pos1, $pos2, 62);
        echo affgear4($pos1, $pos2, 63);
        echo affgear4($pos1, $pos2, 64);
        echo affgear4($pos1, $pos2, 65);
        echo affgear4($pos1, $pos2, 66);
        echo affgear4($pos1, $pos2, 67);
        echo affgear4($pos1, $pos2, 68);
        echo affgear4($pos1, $pos2, 69);
        echo affgear4($pos1, $pos2, 70);
        echo affgear4($pos1, $pos2, 71);
        echo affgear4($pos1, $pos2, 72);
        echo affgear4($pos1, $pos2, 73);
        echo affgear4($pos1, $pos2, 74);
        echo affgear4($pos1, $pos2, 75);
        echo affgear4($pos1, $pos2, 76);
        echo affgear4($pos1, $pos2, 77);
        echo affgear4($pos1, $pos2, 78);
        echo affgear4($pos1, $pos2, 79);
        echo affgear4($pos1, $pos2, 80);
        echo affgear4($pos1, $pos2, 81);
        echo affgear4($pos1, $pos2, 82);
        echo affgear4($pos1, $pos2, 83);
        echo affgear4($pos1, $pos2, 84);
        echo affgear4($pos1, $pos2, 85);
        echo affgear4($pos1, $pos2, 86);
        echo affgear4($pos1, $pos2, 87);
        echo affgear4($pos1, $pos2, 88);
        echo affgear4($pos1, $pos2, 89);
        echo affgear4($pos1, $pos2, 90);
    }

    function affgear1($pos1) {
        echo affgear2($pos1, 0);
        echo affgear2($pos1, 1);
        echo affgear2($pos1, 2);
        echo affgear2($pos1, 3);
        echo affgear2($pos1, 4);
        echo affgear2($pos1, 5);
        echo affgear2($pos1, 6);
        echo affgear2($pos1, 7);
        echo affgear2($pos1, 8);
        echo affgear2($pos1, 9);
        echo affgear2($pos1, 10);
        echo affgear2($pos1, 11);
        echo affgear2($pos1, 12);
        echo affgear2($pos1, 13);
        echo affgear2($pos1, 14);
        echo affgear2($pos1, 15);
        echo affgear2($pos1, 16);
        echo affgear2($pos1, 17);
        echo affgear2($pos1, 18);
        echo affgear2($pos1, 19);
        echo affgear2($pos1, 20);
        echo affgear2($pos1, 21);
        echo affgear2($pos1, 22);
        echo affgear2($pos1, 23);
        echo affgear2($pos1, 24);
        echo affgear2($pos1, 25);
        echo affgear2($pos1, 26);
        echo affgear2($pos1, 27);
        echo affgear2($pos1, 28);
        echo affgear2($pos1, 29);
        echo affgear2($pos1, 30);
        echo affgear2($pos1, 31);
        echo affgear2($pos1, 32);
        echo affgear2($pos1, 33);
        echo affgear2($pos1, 34);
        echo affgear2($pos1, 35);
        echo affgear2($pos1, 36);
        echo affgear2($pos1, 37);
        echo affgear2($pos1, 38);
        echo affgear2($pos1, 39);
        echo affgear2($pos1, 40);
        echo affgear2($pos1, 41);
        echo affgear2($pos1, 42);
        echo affgear2($pos1, 43);
        echo affgear2($pos1, 44);
        echo affgear2($pos1, 45);
        echo affgear2($pos1, 46);
        echo affgear2($pos1, 47);
        echo affgear2($pos1, 48);
        echo affgear2($pos1, 49);
        echo affgear2($pos1, 50);
        echo affgear2($pos1, 51);
        echo affgear2($pos1, 52);
        echo affgear2($pos1, 53);
        echo affgear2($pos1, 54);
        echo affgear2($pos1, 55);
        echo affgear2($pos1, 56);
        echo affgear2($pos1, 57);
        echo affgear2($pos1, 58);
        echo affgear2($pos1, 59);
        echo affgear2($pos1, 60);
        echo affgear2($pos1, 61);
        echo affgear2($pos1, 62);
        echo affgear2($pos1, 63);
        echo affgear2($pos1, 64);
        echo affgear2($pos1, 65);
        echo affgear2($pos1, 66);
        echo affgear2($pos1, 67);
        echo affgear2($pos1, 68);
        echo affgear2($pos1, 69);
        echo affgear2($pos1, 70);
        echo affgear2($pos1, 71);
        echo affgear2($pos1, 72);
        echo affgear2($pos1, 73);
        echo affgear2($pos1, 74);
        echo affgear2($pos1, 75);
        echo affgear2($pos1, 76);
        echo affgear2($pos1, 77);
        echo affgear2($pos1, 78);
        echo affgear2($pos1, 79);
        echo affgear2($pos1, 80);
        echo affgear2($pos1, 81);
        echo affgear2($pos1, 82);
        echo affgear2($pos1, 83);
        echo affgear2($pos1, 84);
        echo affgear2($pos1, 85);
        echo affgear2($pos1, 86);
        echo affgear2($pos1, 87);
        echo affgear2($pos1, 88);
        echo affgear2($pos1, 89);
        echo affgear2($pos1, 90);
    }

    echo affgear1(0);
    echo affgear1(1);
    echo affgear1(2);
    echo affgear1(3);
    echo affgear1(4);
    echo affgear1(5);
    echo affgear1(6);
    echo affgear1(7);
    echo affgear1(8);
    echo affgear1(9);
    echo affgear1(10);
    echo affgear1(11);
    echo affgear1(12);
    echo affgear1(13);
    echo affgear1(14);
    echo affgear1(15);
    echo affgear1(16);
    echo affgear1(17);
    echo affgear1(18);
    echo affgear1(19);
    echo affgear1(20);
    echo affgear1(21);
    echo affgear1(22);
    echo affgear1(23);
    echo affgear1(24);
    echo affgear1(25);
    echo affgear1(26);
    echo affgear1(27);
    echo affgear1(28);
    echo affgear1(29);
    echo affgear1(30);
    echo affgear1(31);
    echo affgear1(32);
    echo affgear1(33);
    echo affgear1(34);
    echo affgear1(35);
    echo affgear1(36);
    echo affgear1(37);
    echo affgear1(38);
    echo affgear1(39);
    echo affgear1(40);
    echo affgear1(41);
    echo affgear1(42);
    echo affgear1(43);
    echo affgear1(44);
    echo affgear1(45);
    echo affgear1(46);
    echo affgear1(47);
    echo affgear1(48);
    echo affgear1(49);
    echo affgear1(50);
    echo affgear1(51);
    echo affgear1(52);
    echo affgear1(53);
    echo affgear1(54);
    echo affgear1(55);
    echo affgear1(56);
    echo affgear1(57);
    echo affgear1(58);
    echo affgear1(59);
    echo affgear1(60);
    echo affgear1(61);
    echo affgear1(62);
    echo affgear1(63);
    echo affgear1(64);
    echo affgear1(65);
    echo affgear1(66);
    echo affgear1(67);
    echo affgear1(68);
    echo affgear1(69);
    echo affgear1(70);
    echo affgear1(71);
    echo affgear1(72);
    echo affgear1(73);
    echo affgear1(74);
    echo affgear1(75);
    echo affgear1(76);
    echo affgear1(77);
    echo affgear1(78);
    echo affgear1(79);
    echo affgear1(80);
    echo affgear1(81);
    echo affgear1(82);
    echo affgear1(83);
    echo affgear1(84);
    echo affgear1(85);
    echo affgear1(86);
    echo affgear1(87);
    echo affgear1(88);
    echo affgear1(89);
    echo affgear1(90);

    $valPlusProche = getClosest($recherche, $array);
    global $gear1, $gear2, $gear3, $gear4;
    global $calc;
    print_r($array); 
    echo $recherche. "\n". "\n";
    echo $valPlusProche. "\n". "\n";
    echo $calc;

?>


Merci d'avance.

2 réponses

Messages postés
14669
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
232
Je remarque que tu as 2 fois la valeur 20 dans tes tableaux.
Ensuite, tu as environ 95 valeurs sur 4 tableaux, cela représente 95^4 possibilités à calculer, soit 81'450'625 possibilités ...

Il faut que tu limites le plus possible les calculs.

Il semble que tes 4 tableaux sont le mêmes, donc en avoir un seul sera plus simple à gérer.
Tu peux calculer le résultat de tes divisions :($pos1/$pos2) et ($pos3/$pos4)

En plus, tu utilises "pos" comme nom, donc c'est la position des nombre, pas leur valeur que tu calcules ...

Ensuite, apprends à utiliser les boucles, copier 95 fois les mêmes lignes, ça rend ton code illisible.
Messages postés
35
Date d'inscription
samedi 14 mars 2020
Statut
Membre
Dernière intervention
10 mai 2020

Mais ce que j'aimerais, c'est que mon code prenne moins de temps à s'exécuter.
Pourrais-tu m'aider?
Messages postés
28531
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juin 2020
2 500
Bonjour,

La "vitesse" de ton script dépend également de la version PHP utilisée ( php 7 est plus rapide que le php 5 )
Mais aussi le serveur ( en fonction du nombre de processeurs et de ram disponible )

Le php n'est pas fait pour effectuer d'aussi gros calculs en temps réel......
Si tu veux continuer à le faire de cette façon.. faudra sûrement déléguer la partie calculs/recherche à un autre langage comme le python ou le ruby je pense.

Mais.. si tu peux faire autrement....
Les valeurs contenues dans tes array peuvent elles changer ?
Car si tu as toujours les même valeurs... tu pourrais découper ton script en plusieurs étapes.
- Un premier script effectue les calculs et les stockent dans une base de données
(pos1,pos2,pos3,pos4,resultatcalcul)

Bien sûr... les données ne changeant pas dans tes array... ce script ne serait qu'à lancer une seule fois.


Puis, dans ta page où tu veux faire la recherche et l'affichage
- un script qui ira comparer les données dans la base pour t'afficher le résultat voulu en utilisant une requête du genre
select * from table 
where value >= ($myvalue * .8) and value <= ($myvalue * 1.2) 
order by abs(value - $myvalue) limit 1