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):

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 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
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();
}
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
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.