Bonjour,

J'ai récupéré les données dans un array ($dataDistant) d'une basse de donnée externe.

Ensuite, je vais mettre ces données dans une table d'une BDD interne.
Mais cet "array" ($dataDistant) est trop lourd qui contient 96899 entrées.

voici une partie de mon array obtenu :
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
print_r($dataDistant )
/*
Array
(
    [0] => Array
        (
            [id] => 10000000
            [quantity] => 10
        )
 
    [1] => Array
        (
            [id] => 10000100
            [quantity] => 110
        )
 
    [2] => Array
        (
            [id] => 10000200
            [quantity] => 10
        )
//....
*/
Mais imaginez qu'il contient 96 899 entrées.
Comment peux - je diviser en plusieurs morceaux ?


En fait, avec cela je fais une requête préparée : voici un exemple de cette requête :
Array ( [requestSQL] => INSERT INTO db_local_product (id,quantity ) VALUES (:id,:quantity ); [insertValues] => Array ( [:id] => 10000000 [:quantity] => 10 ) )
Array ( [requestSQL] => INSERT INTO db_local_product (id,quantity ) VALUES (:id,:quantity ); [insertValues] => Array ( [:id] => 10000100 [:quantity] => 110 ) )
Array ( [requestSQL] => INSERT INTO db_local_product (id,quantity ) VALUES (:id,:quantity ); [insertValues] => Array ( [:id] => 10000200 [:quantity] => 10 ) )
etc...
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
private function req(array $result)
{
	$funcRequestSQL = "INSERT INTO table_int_product (id,quantity )
			       VALUES (:id,:quantity );";
 
	$insertValues = [
		':id'=> $result['id'],
		':quantity'=> $result['quantity'],								
	];
	return $requestMySql = [
		'requestSQL' => $requestSQL,
		'insertValues' => $insertValues,
	];
}
 
 
//... $requetesDistant ... SELECT ....
 
print_r($dataDistant);
foreach($dataDistant as $result){
	foreach($result as $key=>$value){
		$requestMySql = $this-> funcRequestSQL($result);
 
	}
//... $conn ...
 try
        {
            $request = $conn->prepare($requestMySql['requestSQL']);
 
            $request->execute($requestMySql['insertValues']);
            $conn = null;
            return $status = "SUCCESSFULLY INSERTED ";
 
        }
        catch(\PDOException $e){
            self::errorSql ($e, $root, $storeSiteName, $systemName, $subject, $dbname); 
            $conn = null;
            throw $e;
        }
Comment je peux executer mon script pour qu'il n'y a pas de erreur d’espace dans la mémoire tampon et que la file d’attente soit saturée ?
Je pense que je dois diviser mon array ($dataDistant) mais comment ?