Bonjour à tous,

Je suis actuellement en train d'effectuer un programme qui permettra d'effectuer plusieurs connexions à une base de données de façon simultanées.

Voici le code php suivant :

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
 
 
<?php
 
require 'vendor/autoload.php'; 
 
use Amp\Parallel\Worker;
use Amp\Parallel\Context;
 
// Fonction pour exécuter une requête SQL dans un contexte parallèle
function executeQueryInParallel($dsn, $query) {
    return Worker\enqueueCallable(static function () use ($dsn, $query) {
        $connection = odbc_connect($dsn, 'IUD', 'Pwd');
        if (!$connection) {
            throw new \RuntimeException("Failed to connect to database.");
        }
        $result = odbc_exec($connection, $query);
        if (!$result) {
            throw new \RuntimeException("Query execution failed.");
        }
        $data = [];
        while ($row = odbc_fetch_array($result)) {
            $data[] = $row;
        }
        odbc_free_result($result);
        odbc_close($connection);
        return $data;
    });
}
 
// Fonction principale pour effectuer des lectures parallèles sur la base de données
function parallelDatabaseReads($queries) {
    $dsn = 'MADSN'; 
    $promises = [];
    foreach ($queries as $query) {
        $promises[] = executeQueryInParallel($dsn, $query);
    }
    $results = Amp\Promise\wait(Amp\Promise\all($promises));
    return $results;
}
 
// Exemple d'utilisation
$queries = [
    "SELECT * FROM table1 WHERE condition1",
    "SELECT * FROM table2 WHERE condition2",
];
 
$results = parallelDatabaseReads($queries);
 
foreach ($results as $result) {
        var_dump($result);
}
Seulement voilà, j'ai un message d'erreur m'indiquant une fonction non définie.

Voici le message suivant après exécution :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Call to undefined function Amp\Parallel\Worker\enqueueCallable() in ...
J'ai effectué une mise à jour de amphp parallel pour ajouter une bibliothèque en plus, pour les fonctions, en exécutant une commande composer dans le dossier du projet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
sudo composer require amphp/parallel-functions
Malheureusement, cela me donne le même message d'erreur malgré la commande ci-dessus.

Est-ce que vous auriez été confronté à ce problème ?

Comment l'avez vous résolu ?

Merci d'avance.

Cordialement.