11
votes

Comment construire une application PHP MySQL qui fonctionne hors ligne

J'ai une application Web qui stocke des données dans une base de données MySQL en ligne. Il récupère également des données à l'aide du code PHP, effectue des calculs sur le serveur et envoie le résultat à l'utilisateur.

Données C'est assez simple: noms, descriptions, prix, TVA, charges horaires qui sont lues à partir de la base de données et manipulées du côté serveur.

Le client travaille souvent dans des environnements où la connexion Internet est médiocre ou non disponible. Dans ce cas, je voudrais que le client puisse travailler hors ligne: entrez de nouveaux noms, des descriptions, des prix et d'utiliser la dernière TVA pour effectuer des calculs. Puis synchronisez toutes les données dès qu'une connexion est disponible.

Maintenant, le problème est que je ne sais pas quel est le meilleur moyen ou technologies pour y parvenir. Ne vous inquiétez pas, je ne demande pas d'écrire du code pour moi. Pouvez-vous simplement m'expliquer quelle est la bonne façon de construire un tel système?

Y a-t-il un moyen simple d'utiliser mon code en ligne MySQL et PHP localement?

dois-je enregistrer les données dont j'ai besoin dans un fichier local, reconstruire le calcul dans JavaScript, effectuez-les localement, puis synchronisez les données si la base de données est disponible.

Devrais-je utiliser deux base de données MySQL, une locale et une ligne en ligne et une synchronisation entre les deux lorsque des données sont disponibles? Si oui quelle technologie (langue) dois-je utiliser pour effectuer cette opération?

Si possible, je voudrais une réponse de Coders PHP qui a travaillé sur un projet similaire dans le passé et que vous pouvez me donner des informations détaillées sur la structure du cadre et la technologie à utiliser. N'oubliez pas que je suis nouveau à cette façon d'écrire une demande et j'apprécierais si vous pouviez épargner quelques minutes et vous expliquerais tout comme si j'avais six ans ou si stupide (que je suis!)

J'apprécie vraiment toute aide et suggestion.

CIAO,

Donato


1 commentaires

Je suggère de ré-marquer votre question - si vous voulez que cela soit basé sur le navigateur, il va inévitablement utiliser JavaScript, la technologie côté serveur (IE PHP, MySQL, etc.) n'est pas vraiment pertinente. Si vous n'êtes pas strictement limité à un navigateur Web, vous voudrez peut-être consulter Couchdb ( Couchdb.apache.org ) ou similaire - c'est une base de données de documents conçue pour l'utilisation et la resynchronisation hors connexion.


3 Réponses :


2
votes

Jetez un coup d'œil à HTML5's Cache de l'application . C'est à peu près ce que c'est pour. Il y a beaucoup de tutoriels autour de cela, alors jetez un coup d'œil et voyez s'il convient à vos besoins.


0 commentaires

1
votes

J'ai travaillé avec un système similaire pour les navires. Internet coûte cher au milieu de l'océan afin de disposer de serveurs Web locaux installés avec la synchronisation de la base de données via e-mail.

Nous avons également créé des packages simples .exe Simples afin que les personnes sans expérience ne puissent installer le système ou le système de mise à jour ...


2 commentaires

Pouvez-vous partager le fichier .exe?


désolé, je ne peux pas le partager



13
votes

Il y a essentiellement 3 façons d'aller:

Version 1: "Old School": PHP-GTK + et BCCompiler

  • Tout d'abord, si vous n'en avez pas déjà fait, vous devez séparer votre logique commerciale à partir de votre couche de présentation (HTML, moteurs de modèles, ...) et la couche de base de données
  • Adaptez ensuite votre couche de base de données, de sorte qu'elle puisse vivre avec une alternative DB (SQLite locale vous vient à l'esprit) et effectuez la synchronisation lorsque vous reversez en ligne
  • Utilisez enfin PHP-GTK + pour créer une nouvelle interface utilisateur et emballer tout cela avec BCCompiler

    version 2: "standard": prenez votre serveur avec vous

    • Regardez Server2Go, WamponCD et amis pour créer un "serveur Web double cliquable" (démarrez sur Z-wamp )
    • Vous devez toujours adapter votre couche DB comme dans la version 1

      version 3: "Web 2.x": Déplacez l'application du serveur vers le navigateur

      • Déplacez votre logique d'application à partir du côté serveur (PHP) au côté du client (JS)
      • Faites votre rôle de serveur (PHP) uniquement un accès de données ou une couche de synchronisation
      • Utilisez les fonctionnalités hors ligne HTML5 pour remplacer votre accès aux données avec des données locales si vous êtes hors ligne et à resynycc si online

        lequel est le meilleur?

        Cela dépend de ce que vous avez et de ce que vous voulez. Si la majeure partie de votre logique commerciale est en PHP, la déplaçante dans le navigateur peut-elle être interdite, car cela génère également une nouvelle classe de cauchemarmes de sécurité. Personnellement, je ne recommande pas portant de cette façon, mais je le recommande de nouvelles applications, si la DB de support n'est pas trop grande.

        Si vous avez choisi de conserver votre logique professionnelle PHP, la désacation entre 1 et 2 est souvent une quaition de la quantité d'interface utilisateur de votre application - si ce n'est que quelques formes de crud, 1. Peut-être être une bonne idée - est définitivement le plus portable (dans le sens de la prendre avec vous). Sinon, allez avec 2.


1 commentaires

Qu'en est-il de l'option 3? Maintenant, c'est 2014, est sécurisé pour développer nos applications avec la solution version 3? S'il vous plaît guide, j'ai demandé à développer un système de gestion des étudiants de classe de scolarités. Je pense au développement Web ou mobile (Android) est très approprié. Parce que le système doit fonctionner même sans internet, comme ici à Sri Lanka, Internet tombe parfois. Merci