Bonjour.
J'essaie de prendre en main Cassandra avec PHP pour la première fois en me servant du Driver PHP https://github.com/datastax/php-driver/ dont sa documentation est disponible ici: https://github.com/datastax/php-driv...aster/features.
A cet effet, voici donc ce que nous avons produit pour le Fichier de configuration (conf.php):
Et ici nous essayons d'insérer des données dans la Table "images" avec le système de caching (dont le lien a été trouvé sur: https://stackoverflow.com/questions/...in-cassandra):
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 <?php ob_start(); session_start(); $username = "toto"; $password = "totoPass"; define( 'BASE_PATH', __DIR__ . '/' ); try { $cluster = Cassandra::cluster() ->withContactPoints('245.555.121.1', 'example.com', 'localhost', "192.168.1.1", "192.168.1.2") ->withPort(9042) ->withCredentials($username, $password) ->build(); $con = $cluster->connect(); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $con->execute("CREATE KEYSPACE IF NOT EXISTS urlfetch"); $con->execute("USE urlfetch"); } catch(PDOExeption $e) { echo "Connection failed: " . $e->getMessage(); }
Et enfin, selon la documentation du Driver PHP de Cassandra (ici: https://github.com/datastax/php-driv...aster/features), il est possible d'effectuer des requêtes Asynchrones ou pour exécuter des requêtes en parallèles comme ceci:
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 function insertImage($url, $src, $alt, $title, $description) { global $con; //création de la column Image $con->execute("CREATE TABLE IF NOT EXISTS images(siteUrl varchar PRIMARY KEY, imageUrl varchar, alt varchar, title varchar, description varchar) WITH caching = { 'keys': 'ALL', 'rows_per_partition': 'NONE' };"); $query = $con->prepare("INSERT INTO images(siteUrl, imageUrl, alt, title, description) VALUES(:siteUrl, :imageUrl, :alt, :title, :description)"); $query->bindValue(array( ":siteUrl" => $url, ":imageUrl" => $src, ":alt" => $alt, ":title" => $title, ":description" => $description )); return $query->execute(); }
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 <?php $data = array( array(41, 'Sam'), array(35, 'Bob') ); $statement = $session->prepare("UPDATE users SET age = ? WHERE user_name = ?"); $futures = array(); // execute all statements in background foreach ($data as $arguments) { $futures[] = $session->executeAsync($statement, array( 'arguments' => $arguments )); } // wait for all statements to complete foreach ($futures as $future) { // we will not wait for each result for more than 5 seconds $future->get(5); }
Alors, nous aimerions savoir:
1 - Si nous avons omis quelque chose dans le fichier de configuration de Cassandra (1er code ci-dessus) ??? Si oui, comment rendre parfait notre code de configuration de Cassandra pour PHP ???
2 - Pensez-vous que ce que nous avons essayé de faire dans la fonction insertImage ci-dessus ($con->execute("CREATE TABLE IF NOT EXISTS images... ) WITH caching = { 'keys': 'ALL', 'rows_per_partition': 'NONE' };")) est correct ???
Si non, comment créer une table dans Cassandra pour PHP avec un système de CACHE ???
3 - Comment appliquer le traitement Asynchrone à notre fonction insertImage en la modifiant et en suivant la logique du 3ème code ci-dessus de l'exemple de la documentation du Driver Cassandra DataStax ???
Merci de nous aider s'il vous plaît.
Partager