Question

Je suppose que pour chaque demande de page, le serveur Web (par exemple, Apache) crée une nouvelle instance d'un script en mémoire. Ces instances peuvent-elles communiquer entre elles pendant l'exécution? et transmettre des données aussi?

Était-ce utile?

La solution

Si vous souhaitez transmettre des données entre des scripts en PHP, je vous suggère d'utiliser soit memcached, soit une base de données. Ou éventuellement APC.

Si les scripts appartiennent à la même session, ils pourraient théoriquement communiquer via la session, mais il s'agirait en réalité d'une communication à sens unique dans la plupart des cas, car un seul script peut accéder à la session à la fois (session_start () verrouille le session jusqu'à ce que le script termine la session implicitement ou explicitement).

Autres conseils

Je pense que les suggestions de Martin et Cletus sont valables. Mon choix serait fonction du but final du script.

  • Combien de données allez-vous lancer? Pouvez-vous gérer les frais généraux d’un processus externe?
  • Quel type de données échangez-vous? Est-ce normalisé? Ou vaut-il maintenant la peine de normaliser?
  • Devrez-vous consulter ces données ultérieurement? Ou peut-il être jeté après avoir été traité?
  • Ces scripts seront-ils exécutés sur des serveurs différents?

  • Fichiers plats, avec un mécanisme de verrouillage

  • Base de données relationnelle
  • Base de données de documents (magasin de clés / valeurs, persistant ou non)
  • Mémoire partagée (APC ou fonctions principales)
  • Files d'attente de messages (MQ actif et société)

Je pense que vous obtiendrez le plus de valeur en externalisant le processus car vous pouvez avoir plusieurs ordinateurs pour gérer les messages / données et plusieurs ordinateurs pour les produire / les consommer.

Le modèle utilisé par les scripts PHP ne contient pas vraiment la notion de persistance en mémoire pour ces scripts, car ils sont généralement conçus pour ne s'exécuter que pendant le minimum de temps requis pour afficher la page demandée. Cela rendrait difficile toute utilisation utile de la communication avec état entre ces scripts, puisqu’une fois la page servie, le script n’a plus à faire. Ainsi, toute communication entre scripts PHP se fait généralement davantage par manipulation des entrées de base de données et autres.

Si vous devez effectuer un traitement continu pour lequel vous souhaitez transmettre des données, vous pouvez également consulter d'autres modèles d'application Web, tels que les servlets.

Vous devriez pouvoir le faire avec une mémoire partagée, comme décrit ici: http://blog.taragana.com/index.php/archive/how-to-use-shared-memory-in-php/ (en supposant que vous ' ne fonctionne pas sous Windows)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top