Aller au contenu
Support de Zwii et Yocto
Fred

Nouveau module de stockage des données

Messages recommandés

Salut tertous,

 

Quelques infos sur la prochaine version. Il y aura des changements au niveau du stockage. Le format json est maintenu cependant les données ne seront plus stockées dans deux fichiers mais individuellement :

 

image.png.8ebdb174afb7370ebf6047e9a5fa9af7.png

fr contient :

image.png.9917cb02b058d5d8404b939472375ee6.png

L'enregistrement de ces fichiers ne s'effectue plus "artisanalement" avec une simple écriture et lecture mais avec une classe dédiée (https://www.xeweb.net/flintstone/) en conséquence, Zwii utilisera du php 7 minimal.

 

Flintstone

A key/value database store using flat files for PHP.

Features include:

    Memory efficient
    File locking
    Caching
    Gzip compression
    Easy to use

 

Il reste une optimisation au niveau du chargement des classes mais les modules de lecture, d'écriture et de backup fonctionnent.

 

Attention à ne pas installer sur un site de prod !

 

https://github.com/fredtempez/ZwiiCMS/archive/data_store.zip

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, Fred a dit :

Zwii utilisera du php 7 minimal

Dans l'attente de la mise à jour des serveurs de free.fr, les freenautes devront se contenter de la version 9.2 de ZwiiCMS 😞

Partager ce message


Lien à poster
Partager sur d’autres sites

Malheureusement, il n’est pas possible de gérer deux versions simultanément. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Une nouvelle classe gérant le stockage json tourne sous PHP 5.6, pour les curieux le GIT est à jour, cf lien sur le premier post.

  • J'aime 1
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, Fred a dit :

Une nouvelle classe gérant le stockage json tourne sous PHP 5.6

 

Merci @Fred d'essayer de contenter tout le monde, mais free.fr pose un nouveau problème :

 

Warning: require(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /var/www/sdb/b/e/site.web/core/vendor/autoload.php on line 3

Warning: require(http://site.web.free.fr/core/vendor/jsondb/Dot.php): failed to open stream: no suitable wrapper could be found in /var/www/sdb/b/e/site.web/core/vendor/autoload.php on line 3

Fatal error: require(): Failed opening required 'http://site.web.free.fr/core/vendor/jsondb/Dot.php' (include_path='/var/www/sdb/b/e/site.web/include:.:/usr/php5/lib/php') in /var/www/sdb/b/e/site.web/core/vendor/autoload.php on line 3

 

Le 1er warning indique que allow_url_include=0

 

Extrait du phpinfo :

 

9.3.png.e4e9b8676692207cbd606d0534f7df89.png

 

Il va encore falloir contourner ce problème... C'est à n'en plus finir 😞

Donc, merci encore mais ne te fais pas ch... avec free.fr, garde ta 1ère idée qui satisfera le plus grand nombre, les freenautes resteront sur la 9.2 ou iront voir ailleurs.

De mon côté, je vais chercher un autre hébergeur gratuit moins contraignant.

 

Modifié par Gilux
2 fautes

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ma part archive décompressée et installée sur l'un de mes domaines....  http://lechti64.org/ZwiiCMS-data_store/
 

Fatal error: require(): Failed opening required 'core/vendor/jsondb/JsonDB.php' (include_path='.:/usr/lib/php7.3') in /homepages/18/d141619948/htdocs/wsb3904589603/ZwiiCMS-data_store/core/vendor/autoload.php on line 4

ce qui est concerné contient cette instruction:

ligne   instruction

1       <?php
2       // JsonDB
3       require "core/vendor/jsondb/Dot.php";
4       require "core/vendor/jsondb/JsonDB.php";
5       // phpMailer
6       require "core/vendor/phpmailer/phpmailer.php";
7       require "core/vendor/phpmailer/exception.php";
8       // Sitemap Creator
9       require "core/vendor/sitemap/SitemapGenerator.php";

pourtant le fichier est bien présent dans le dossier core/vendor/jsondb/JsonDB.php

2019-08-08_20-27-27.png.cb98beef5fcf1838f0f5fea0f23a7061.png

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Les deux erreurs sont liées, pas bien grave.  Cette dernière classe est plus légère et évitera les contraintes de migration de php. 

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 07/08/2019 à 19:03, Fred a dit :

Attention à ne pas installer sur un site de prod !

Heu j'avais oublié de te dire que comme je n'ai aucun site en prod (Zwii étant ma passion) bin tu peux compter sur le seul "fou du fofo" pour tester en live😋

Donc quand tu diras "OK nouvelle version à tester" hé bien compte sur moi pour le faire illico 👍

 

Ce sera sympa effectivement que toutes les données utilisateurs soient inscrites (pages, modules etc..) dans des fichiers indépendants en cas de crash...pour info j'avais aussi essayé ta version dispo sur le git, idem même erreur pour ma part. Une très bonne évolution du cms en perspective grâce à toi.

Partager ce message


Lien à poster
Partager sur d’autres sites

Un système Linux est case sensible à la casse, pas une machine Windows 🙂

 

require "core/vendor/jsondb/JsonDb.php";

n'est pas

require "core/vendor/jsondb/JsonDB.php";

 

Voici le bon autoload à placer dans vendor qui fonctionnera aussi chez Free :

 

autoload.php

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Fred a dit :

Voici le bon autoload à placer dans vendor qui fonctionnera aussi chez Free

 

Bingo !

Tout fonctionne chez free.fr avec l'autoload.php corrigé, super !

Comme quoi il ne faut jamais désespérer ;)

 

Il n'en reste pas moins vrai que free.fr est un hébergeur vraiment particulier...

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, Fred a dit :

require "core/vendor/jsondb/JsonDb.php";

n'est pas

require "core/vendor/jsondb/JsonDB.php";

 

D’où l’intérêt de tout écrire en minuscules !

Ça évite bien des déboires...

Partager ce message


Lien à poster
Partager sur d’autres sites

Je sais pas si c'est une impression, mais le chargement des pages avec cette nouvelle version est beaucoup plus rapide

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

Pas de soucis chez o2switch.
L'affichage des pages est déjà très fluide et je n'ai pas remarqué de différence notable, mais s'est un ressenti plutôt subjectif.

Philippe

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 7 heures, Fred a dit :

La fonction d’import d’une v9 devrait aussi être opérationnelle

 

Elle l'est, le passage de la 9.2.03 à la 9.3.00.dev s'est fait sans aucun problème, de plus, le fait que les données soient mieux réparties dans plusieurs fichiers .json et surtout non obfusquées permet d'intervenir beaucoup plus facilement en cas de besoin d'une correction toujours possible. Comparativement, l'ancien data.json était un véritable foutoir, il n'y avait aucune raison pour que son code soit obfusqué, et il fallait y aller avec une extrême prudence pour le modifier manuellement.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Fred @Gilux

 

Il y a 8 heures, Gilux a dit :

D’où l’intérêt de tout écrire en minuscules !

 

Pas forcément la preuve en image, je me suis juste contenté de respecter le nom du fichier inclus à la ligne n°4 du fichier autoload ( JsonDB.php  ) pour renommer uniquement le dit fichier dans son dossier pour qu'illico cette version s'installe correctement.

 

Hier soir au moment de l'installation:

2019-08-08_20-27-27.png

 

 

⛏️ Ce matin après correction unique du nom de fichier:

 

2019-08-09_06-55-18.thumb.png.e83db02666bb737ee253a104683e5a5c.png

 

Résultat visible en suivant le lien donné dans mon précédent post plus haut 😉

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ajoute que le fait que le code soit plus clair et mieux réparti participe certainement à la plus grande rapidité d'affichage constatée, car le serveur n'a plus qu'a lire et servir les données des pages, le reste n'étant pas modifié d'une page à l'autre est mis en mémoire cache

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 10 minutes, Gilux a dit :

J'ajoute que le fait que le code soit plus clair et mieux réparti

ce que je confirme illico aprés le test que je viens de faire...ce sera facile de "réparer" un zwii aprés crash, chaque donnée étant stockée séparément elle n'impactera le fonctionnement du zwii en cas de plantage de l'une d'elle.

De plus pour un débutant avoir de-minifié les fichiers json rend ceux ci plus lisible, donc plus facile de retrouver une ligne et de la corriger en conséquence.

vais maintenant faire le test chez Free pour voir...

 

Exemple du json contenant les info d'utilisateur

2019-08-09_07-16-42.thumb.png.9f487750cad8891ec42b711e4942ea46.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans les deux versions, les écritures se font avec les méthodes file_get_content et file_put_content.

La grande différence est que la classe utilisée applique des paramètres supplémentaires qu'il serait possible d'utiliser dès maintenant :

image.thumb.png.165d7cd17e7e25756922ff7951124bb2.png

 

Actuellement, Zwii, lit et écrit TOUTES ses données à chaque opération, par exemple lors de la modification d'une page, les modules, la config, le core et les users sont écrits. Sur un petit site l'impact ne doit pas être important, mais sur un gros site et/ou un petit serveur, il doit y avoir des conséquences.

 

La prochaine étape sera d'effectuer une écriture des données modifiées. La méthode set de cette classe devrait rendre cela possible.

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, Fred a dit :

Actuellement, Zwii, lit et écrit TOUTES ses données à chaque opération

 

Ça c'est le fonctionnement du CMS, mais l'affichage c'est le navigateur qui s'en charge, et une donnée non modifiée est lue depuis le cache, non ?

A un point tel que si un contenu est peu modifié il faut vider le cache pour l'actualiser.

Partager ce message


Lien à poster
Partager sur d’autres sites

Non cela se passe au niveau du php, si un cache entre en jeu c’est celui du serveur et pas le navigateur. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Zwii manipule toutes les données du site dans un tableau associatif qui est chargé à la construction.

Si ce tableau n'est pas chargé lors  de la lecture des fichiers de données, la procédure d'installation est déclenchée puis les données par défaut sont écrites puis lues.

 

Une fois que le tableau est chargé, il n'y a plus aucune lecture sur le disque, elles se font dans le tableau en ram. En revanche lorsqu'une modification est effectuée par setData, une écriture de la totalité du tableau est réalisée.

 

Dans un premier temps, l'idée est d'écrire les données modifiées uniquement, je suis presque certain que cela peut marcher. Ensuite, se passer du tableau en ram et lire les données à la volée.

 

Évidemment, la capacité du serveur va aussi jouer dans l'équation.

 

 

 

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ma part j'ai poussé l'expérience de la façon suivante:

1° le zwii de test installé avec ses exemples de pages complet

 

⛏️ Je me suis contenté de modifier depuis l'admin du zwii certaines pages pour vérifier l'écriture en direct des datas sur les fichiers hébergés sur le serveur en ligne (ionos.fr)

✔️ Tout est nickel et rien ne manque à l'enregistrement des pages et réglages divers (vérifications faites dans les différents fichiers json en place dans /site/data/ et /site/data/fr/ )

 

⛏️ Seconde manipulation de ma part ensuite, cette fois ci en éditant directement les fichiers json concernés depuis le serveur ( les fichier /site/data/fr/page.json et le fichier /site/data/theme.json )

✔️ Après rafraîchissement de la page d'accueil de mon zwii de test (navigateur firefox) et bien les modifs effectuées en live directement dans les fichiers concernés sont effectives de suite et sans provoquer aucuns bugs.

 

👍 Je remarque aussi une rapidité d'affichage des pages, une réelle fluidité das la navigation sur le site en lui même ce qui est tout bénef pour l'utilisateur.

 

⛏️ 😁 Dernier test effectué, j'ai provoqué volontairement un bug dans le fichier page.json en modifiant par ajout d'une virgule celui ci...résultat que j'attendais la page est inaccessible mais le site lui même reste fonctionnel.

✔️En restaurant simplement (soit par écriture directe de la correction dans le page.json ou remplacement de ce fichier json sauvegardé avant ma manip) le fichier qui enregistre mes pages, le zwii retrouve alors son comportement sans faille que nous lui connaissons.

 

Bien mieux en effet cette sauvegarde indépendante pour chaque chose que celle utilisée auparavant ou si l'on plantait ne serait que le core.json l'on perdait tout le site si par mégarde nous ne l'avions pas sauvegardé. Si d'autres tests doivent être effectués bin y'a qu'à le demander pour que je m'y colle. 😉

 

Good job @Fred 👍

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouvelle version du core sur le GIT.

 

La sauvegarde dans les fichiers json s'effectue par clé. En fait il y a une alternative :

saveData() est appelé sans paramètre, le tableau contenant toutes les données  est écrit dans les différents fichiers. C'est le cas lors de la phase d'installation.

saveData() est appelé avec paramètres - il n'y a qu'un seul appel de ce type - les clés passées en paramètres sont les seules écrites.

 

saveData() a été totalement réécrite, en théorie, le temps d'écriture doit être vraiment réduit surtout pour les gros sites.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...