Comment faire plusieurs queues en PHP ?

WRInaute accro
Bonjour

Je cherche à implémenter en PHP des structures de queues ( pas des FIFO qui se vident quand on les lit ).

Ces queues contiendront des data et sont censées tenir lieu de fichiers de type FIFO.

La classe Queue fait celà, mais il semble qu'il n'y ait pas de possibilité de reconnaître ( lire, écrire ) des queues partagées entre plusieurs processus ( = scripts ) php.

Comment déclarer deux queues, partagées entre deux ( ou + ) processus ?

Merci beaucoup de votre aide.
 
WRInaute accro
Je me suis mal exprimé.

J'ambitionne de faire un système dynamique d'écriture/lecture dans deux fichiers ( de type FIFO ), mais sans que les lectures soient destructives.

Ceci pour faire un anti-aspirateur qui enregistre les ips ( 4 ou 6 ) de bots devant accéder au site sans filtrage.

Pour qu'il n'y ait pas besoin de calculer les reverses à chaque requête http.

A part çà, système habituel : calcul reverse puis host -> ip.

Au lieu des ips, ce seront des hash codes ( calcul complexe ) qui seront enregistrés.

Théoriquement utiliser posix_mkfifo() générerait des fifo non persistants.

Il me faudrait une structure fifo persistante et partageable entre plusieurs scripts php.

Comment faire ?
 
S
suppr334822
Guest
$unique_id = uniqid();
$fifo_path = "/path/to/fifo_$unique_id";
mkfifo($fifo_path, 0666);

————

// Connexion à la base de données
$conn = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");

// Création de la table FIFO
$conn->exec("CREATE TABLE fifo (id INT AUTO_INCREMENT PRIMARY KEY, path VARCHAR(255))");

// Insertion d'un nouveau fichier FIFO
$unique_id = uniqid();
$fifo_path = "/path/to/fifo_$unique_id";
$conn->exec("INSERT INTO fifo (path) VALUES ('$fifo_path')");

// Récupération des fichiers FIFO
$result = $conn->query("SELECT * FROM fifo");
while ($row = $result->fetch()) {
$fifo_path = $row['path'];
// Faire quelque chose avec le fichier FIFO
}


————

// Connexion à RabbitMQ
$connection = new \PhpAmqpLib\Connection\AMQPStreamConnection('localhost', 5672, 'guest', 'guest');

// Création d'une file d'attente
$channel = $connection->channel();
$channel->queue_declare('my_queue', false, true, false, false);

// Envoi d'un message
$message = "Hello, world!";
$channel->basic_publish(new \PhpAmqpLib\Message\AMQPMessage($message), '', 'my_queue');

// Récupération des messages
$channel->basic_consume('my_queue', '', false, true, false, false, function($message) {
$body = $message->body;
// Faire quelque chose avec le message
});

// Boucle d'attente pour recevoir les messages
while (count($channel->callbacks)) {
$channel->wait();
}
 
WRInaute accro
Bon.

J'admet qu'avec une table TEMPORARY çà devrait coller.

Le problème d'accès concurrent...

Sinon d'autres systèmes rapides de mémorisation persistantes.

En mémoire RAM of course.

Merci beaucoup.
 
WRInaute accro
Erreur.

Avec le MEMORY ENGINE possible de créer des tables MariaDB.

Au maximum 4 Go pour max_heap_table_size.

Quand le serveur redémarre, la table en mémoire est recréée vide.

Cà devrait coller pour de la mémorisation type fifo.

Merci beaucoup.
 
WRInaute accro
Voilà c'est fait.

Je n'ai plus qu'une seule chose à faire :

Comment sur MariaDB, régler au démarrage, des variables :

max_heap_table_size,

tmp_table_size

Merci beaucoup.
 
S
suppr334822
Guest
Pour régler les variables max_heap_table_size et tmp_table_size de MariaDB au démarrage, vous pouvez suivre les étapes suivantes :

  1. Ouvrez le fichier de configuration de MariaDB, qui se trouve généralement dans le répertoire /etc/mysql/mariadb.conf.d/ sur les systèmes Linux.
  2. Recherchez la section [mysqld] dans le fichier de configuration.
  3. Ajoutez les lignes suivantes sous la section [mysqld] pour définir les valeurs des variables max_heap_table_size et tmp_table_size :
    max_heap_table_size = <valeur> tmp_table_size = <valeur>
    Remplacez <valeur> par la taille maximale que vous souhaitez définir pour chaque variable, par exemple : 64M, 128M, 256M, etc.
  4. Enregistrez le fichier de configuration et redémarrez le service MariaDB pour que les nouveaux paramètres prennent effet :
    systemctl restart mariadb
Une fois que vous avez effectué ces étapes, les variables max_heap_table_size et tmp_table_size seront configurées avec les valeurs que vous avez définies au démarrage de MariaDB.
 
WRInaute accro
Merci beaucoup site-de-voyance

C'est en place à 256M.

Une question :

Se pourrait-il que Google m'ait sanctionné à cause de stats trop justes ?

Ou ferait-il semblant d'ignorer mon accord réciproque avec www.lescourses.com ?

Données de courses contre mes pronostics ?

Maintenant j'ai les données de courses autrement.

Merci.
 
S
suppr334822
Guest
Se pourrait-il que Google m'ait sanctionné à cause de stats trop justes ?
Comme vous l’a justement indiqué @cthierry a plusieurs reprises, c’est notamment à cause du manque de contenu.
Votre accord avec l’autre site, Google s’en moque un peu je pense. Sauf si le contenu est dupliqué (code html ou autre de statistiques).
 
Discussions similaires
Haut