Nginx avec PHP sans filetage sans thread… Puis-je coder avec l'hypothèse de non-conditions de course lorsqu'il persiste?

StackOverflow https://stackoverflow.com/questions/9474630

Question

Je pourrais comprendre ce que cela signifie pour Nginx d'être motivé par des événements opposés à un processus motivé (donc nous n'avons pas MOD_PHP dans chaque fil comme le ferait Apache). Je suppose que puisque j'ai une instance de PHP-CGI en cours d'exécution pour tous les threads de travail NGINX que toutes les exécutions PHP seront synchrones. Cela signifie-t-il que lorsque j'accède aux objets à partir de la base de données, je n'ai pas à me soucier des conditions de course lorsqu'il s'agit d'enregistrer des données?

Je ne sais pas si j'ai la bonne réflexion ou que je suis complètement hors base.

Merci. Je suis nouveau dans la programmation Web / la base de données / les serveurs Web

Était-ce utile?

La solution

"Driven des événements" signifie que l'application "s'y trouve" en attendant les événements pour conduire ce qui se passe ensuite. Les événements typiques sont diverses formes d'activité de souris ou de clavier.

En revanche, «axé sur le processus» (souvent «programmation procédurale») signifie simplement qu'il y a un programme «regardant» pour les choses, qui se déroule constamment à travers tout ce qu'il est censé faire.

Vous pouvez coder à la fois en même temps, mais cela est "un exercice avancé" - ou, au moins, certains le pensent.

Maintenant, le gros problème des conditions de course concerne vraiment la question de savoir quel enchevêtrement peut se produire. Avec des bases de données, voici un exemple parfait: si vous codez votre état d'erreur de retour dans une grande varable et qu'il y a un chevauchement temporel entre les activités dans votre code (se produit souvent dans des environnements "axés sur l'événement", mais peut se produire dans une programmation purement procédurale, vous aussi) peut obtenir le mauvais message d'erreur. Imaginez si un thread qui faisait quelque chose avait une erreur et qu'un thread plus rapide n'avait aucune erreur, mais le thread plus rapide est venu par la suite, et définir le statut au succès; Il y a une condition que la programmation "Fiter Safe" éviterait. Ce n'est qu'un exemple d'une «condition de course».

Tant que les actions de chaque fil sont indépendantes, vous n'avez pas de conditions de course par SE - tout dépend de la logique de l'application et de ses besoins - et personne ici ne peut vous dire ce qu'ils peuvent être, seulement le développeur! ... est-ce un système de réservation aérien? ...

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