Fils PHP et de synchronisation
-
11-10-2019 - |
Question
Je suis nouveau à PHP, pour commencer, j'ai décidé de mettre en œuvre un singleton.
Alors que je suis en mesure de recréer le modèle singleton en php, mais je ne suis pas sûr de savoir comment mettre en œuvre revérifié verrouillage.
est-ce possible / nécessaire en PHP. Je l'ai lu quelque part que PHP n'est pas multithread? Quelqu'un peut-il confirmer?
Si elle est multithread, quelqu'un peut me expliquer comment verrouillage () ou synchronisez () travail en PHP?
Merci, Henry
La solution
Partager rien architecture
PHP a Partager rien Architecture :
- Comme HTTP, chaque demande est distincte
- données partagées est poussé vers le bas vers la couche de données magasin
- Évitez les contrôleurs avant
Cela nous donne:
- Capacité à équilibrage de charge
- basculement invisible d'un centre de données à un autre
- Une meilleure modularisation des applications
- Plus facile à développer et déboguer
verrouillage revérifié
mais je ne suis pas sûr de savoir comment mettre en œuvre une double vérification de verrouillage.
Dans la couche de base de données générale est responsable. MySQL (InnoDB) standard a par exemple la ligne de niveau verrouillage (qui devrait être suffisant pour cela).
InnoDB fait un verrouillage au niveau de la ligne et exécute les requêtes comme non bloquant lectures cohérentes par défaut, dans le le style d'Oracle.
Si cela ne suffit pas que SQL a aussi, par exemple transactions pour ce faire.
Livres en ligne définit une transaction une « séquence d'opérations effectuées en tant que une seule unité logique de travail "
fork
Comme les diapositives dire PHP a une action rien-Architecture (traditionnelle) qui n'implique aussi que PHP ne pas un fil (modèle) . Bien que vous pouvez compiler ( pas activé par défaut ) PHP pour avoir un support des procédés fourche qui peuvent communiquer les uns avec les autres. Lorsque vous compilez également les Semaphore Fonctions vous pouvez faire des choses comme < a href = "http://www.php.net/manual/en/function.sem-acquire.php" rel = "nofollow noreferrer"> sem_acquire et sem_release . Mais en général, cela ne vaut pas PHP.