Frage

Ich bin neu in PHP, so zu beginnen habe ich beschlossen, einen Singleton zu implementieren.

Während ich bin in der Lage, die Singletonmuster in PHP zu erstellen, aber ich bin nicht sicher, wie doppelt geprüft zu implementieren sperrt.

Ist das überhaupt möglich / nötig in PHP. Ich habe irgendwo gelesen, dass PHP nicht multithreaded? Kann jemand bestätigen, dass?

Wenn es multithreaded, kann mir jemand erklären, wie lock () oder synchronisieren () Arbeit in PHP?

Danke, Henry

War es hilfreich?

Lösung

anteil nichts Architektur

hat PHP eine Aktien nichts Architektur :

  • Wie HTTP, jede Anforderung unterscheidet
  • Shared-Daten nach unten gedrückt wird, um die Datenspeicher-Schicht
  • Vermeiden Front-Controller

Das gibt uns:

  • Die Fähigkeit, Lastausgleich
  • Unsichtbare Failover von einem Rechenzentrum auf einen anderen
  • Bessere Modularisierung von Anwendungen
  • Einfacher zu entwickeln und zu debuggen

doppelt geprüft Verriegelung

, aber ich bin nicht sicher, wie zu implementieren doppelt überprüft Verriegelung.

In der Regel der Datenbank-Ebene ist dafür verantwortlich. MySQL (innodb) -Standard hat beispielsweise Zeilenebene Verriegelungs (die dafür ausreichend sein sollte).

InnoDB ist Verriegelung auf Zeilenebene und führt Abfragen als nicht sperr konsistent liest standardmäßig in der Stil von Oracle.

Wenn dies nicht ausreicht, um als SQL hat auch zum Beispiel Transaktionen dies geschehen lassen.

Books Online definiert eine Transaktion eine „Folge von Operationen durchgeführt, wie eine einzelne logische Einheit der Arbeit "

Gabel verarbeitet

Wie die Dias sagen PHP hat eine Share-nichts-Architektur (traditionell), die auch bedeutet, dass PHP nicht über ein Gewinde (Modell) . Obwohl Sie kompilieren PHP ( standardmäßig nicht aktiviert ) Unterstützung haben fork Prozesse, die miteinander kommunizieren können. Beim Kompilieren auch die Semaphore Funktionen dann können Sie wie die Dinge tun < a href = "http://www.php.net/manual/en/function.sem-acquire.php" rel = "nofollow noreferrer"> sem_acquire und sem_release . Aber im Allgemeinen diese PHP nicht gilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top