[PHP] partager des données sans BDD

partager des données sans BDD [PHP] - PHP - Programmation

Marsh Posté le 23-06-2004 à 00:06:31    

salut
j'aimerais développer un chat qui n'utilise ni mysql ni des fichiers
donc je ne sais pas comment garder l'état (ou au moins les dernières lignes de chat) pour que les utilisateurs puissent se voir entre eux...
si vous aviez une idée de comment faire ça :)

Reply

Marsh Posté le 23-06-2004 à 00:06:31   

Reply

Marsh Posté le 23-06-2004 à 01:22:46    

ni SQL ni Fichiers...la je vois pas
y stocker en mémoire vive? comment?

Reply

Marsh Posté le 23-06-2004 à 02:54:05    

Avant de poser cette question, est ce que tu t'es demandé pourquoi tu n'utiliserais pas mysql ou des fichiers ?  
 
PS : j'aimerais concevoir un ordinateur qui fonctionne sans processeur, quelqu'un peut m'aider à trouver comment ;)


Message édité par gooopil le 23-06-2004 à 02:54:46
Reply

Marsh Posté le 23-06-2004 à 09:15:46    

j'ai regardé un peu du coté de shmop_open et ce genre de trucs mais personne semble avoir utilisé ça jamais :/
en fait j'aimerais faire une sorte de chat hyper simplifié pour pouvoir l'installer n'importe ou chez n'importe quel hosting et le mieux serait de faire un truc sans bdd ni files!

Reply

Marsh Posté le 23-06-2004 à 09:17:56    

De toute facon, des fichiers seront utilisés, si ce n'est de manière explicite ce le sera de manière implicte

Reply

Marsh Posté le 23-06-2004 à 09:26:51    

pas dans la technique avec shmop à priori, mais je sais pas comment m'en servir et c pour ca que je poste ici
 
ca roule lordii ? :D

Reply

Marsh Posté le 23-06-2004 à 09:34:13    

Ca roule car j'ai retrouvé un taf et toi comment ca se passe , des news de zop?
 
Moi, je ne vois pas de difficulté avec shmop, tu fais un shmop_open, et ensuite tu peux écrire des chaines de caractères dedans.
 
Le seul truc, c'est qu'il faut un identifiant que tu peux obtenir via ftok().
 
Il me semble que l'exemple fourni en bas de page de shmop_open est assez explicite ( http://www.php.net/manual/en/function.shmop-open.php )

Reply

Marsh Posté le 23-06-2004 à 09:38:41    

oui je l'ai vu,
mais en fait, j'aimerais faire un script basique pour tester;
 
test1.php insèrerait (créer ou appender) dans une variable shmop des données, et depuis un autre script test2.php lire le contenu de la variable si elle existe
 
mais j'y arrive po
 
tu bosses sur paris ?

Reply

Marsh Posté le 23-06-2004 à 09:57:49    

A Issy, c'est pas très loin
 
Pour ton affaire,
Il faut créer la zone de mémoire, puis je pense qu'il faut transmettre le key ( systeme id ) via une session.
 
Ensuite dans la deuxième page tu réopen via shmop_open, puis shmop_read

Reply

Marsh Posté le 23-06-2004 à 11:08:06    

hum kelkun aurait il un exemple concret ? paske j'ai testé les trucs et ça ne marche pas top :'(

Reply

Marsh Posté le 23-06-2004 à 11:08:06   

Reply

Marsh Posté le 23-06-2004 à 11:31:05    

montre nous un peu ce que tu as codé, que l'on ne parte pas de rien

Reply

Marsh Posté le 23-06-2004 à 13:57:13    

yo!
eh bien tout siemplement, j'ai une page qui écrit, et l'autre qui doit lire le contenu de la mémoire partagée;
j'ai donc simplement repris l'exemple donné dans différents sites:
 
write.php

Code :
  1. <?php
  2. // Create 100 byte shared memory block with system id if 0xff3
  3. $shm_id = shmop_open(0xff3, "c", 0644, 100);
  4. if(!$shm_id) {
  5.     echo "Couldn't create shared memory segment\n";
  6. }
  7. // Get shared memory block's size
  8. $shm_size = shmop_size($shm_id);
  9. echo "<br>SHM Block Size: ".$shm_size. " has been created.\n";
  10. // Lets write a test string into shared memory
  11. $shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
  12. if($shm_bytes_written != strlen("my shared memory block" )) {
  13.     echo "<br>Couldn't write the entire length of data\n";
  14. }
  15. // Now lets read the string back
  16. $my_string = shmop_read($shm_id, 0, $shm_size);
  17. if(!$my_string) {
  18.     echo "<br>Couldn't read from shared memory block\n";
  19. }
  20. echo "<br>The data inside shared memory was: ".$my_string."\n";
  21. //Now lets delete the block and close the shared memory segment
  22. if(!shmop_delete($shm_id)) {
  23.     echo "<br>Couldn't mark shared memory block for deletion.";
  24. }
  25. shmop_close($shm_id);
  26. ?>


 qui donne ===>
 

Code :
  1. SHM Block Size: 100 has been created.
  2. The data inside shared memory was: my shared memory block


 
puis une page read.php:
 

Code :
  1. <?
  2. $shm_id = shmop_open(0xff3, "a", 0644, 100);
  3. echo $shm_id;
  4. ?>


 
qui donc ouvre simplement en mode append ... par contre le résultat de celle ci est décevant:

Code :
  1. Warning: shmop_open(): unable to attach or create shared memory segment in /var/www/localhost/htdocs/chat/read.php on line 2


 
voila
si kelkun a une idée ? ce que j'aimerais faire c avoir une variable globale accessible interscripts donc en mémoire partagée (car pas de bdd ni de fileio)
l'idéal serait de pouvoir éventuellement y fouttre un objet php sérialisé et zippé, pour ainsi faire un chat dans lequel je désérialise et rajoute du texte, ou je désérialise et lit le texte dedans ....
 
voilà merci :)

Reply

Marsh Posté le 23-06-2004 à 16:16:43    

je vois pas ou est mon erreur en fait :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed