PHP-Lösungen für hohe Parallelität umfassen: 1. Verwenden Sie die Dateisperrmethode, um das Problem zu lösen. 2. Verwenden Sie die Nachrichtenwarteschlangenmethode, um das Problem zu lösen. 3. Wenn es sich um einen verteilten Clusterserver handelt, eine oder mehrere Warteschlangen Server werden benötigt. 4. Verwenden Sie die Memcache Lock-Lösung.
Bei Flash-Verkäufen, dem Erwerb von Bahntickets usw. stoßen wir normalerweise auf Probleme mit hoher Parallelität. Die folgenden vier Lösungen werden bereitgestellt:
( Empfohlenes Tutorial: php-Grafik-Tutorial)
Verwenden Sie die Dateisperre
$fp = fopen("order.lock", "r"); if(flock($fp,LOCK_EX)){ //..处理订单的代码 flock($fp,LOCK_UN); } fclose($fp);
Verwenden Sie die Nachrichtenwarteschlange
Wir verwenden häufig To Memcacheq , Radis.
Zum Beispiel: Wenn es 100 Tickets für Benutzer gibt, können sie diese 100 Tickets in den Cache legen und sie beim Lesen und Schreiben nicht sperren. Wenn die Parallelität groß ist, können etwa 500 Personen erfolgreich Tickets erhalten, sodass Anfragen nach 500 am Ende der Veranstaltung direkt auf die statische Seite übertragen werden können. Es ist unmöglich, dass 400 der 500 Menschen, die eintreten, das Produkt bekommen.
So können nur die ersten 100 Personen erfolgreich einkaufen, entsprechend der Reihenfolge, in der sie in die Warteschlange kommen. Die nächsten 400 Personen gelangen direkt zur Endseite der Veranstaltung. Die Eingabe von 500 Personen ist natürlich nur ein Beispiel. Sie können die Zahl selbst anpassen. Die Aktivitätsendseite muss eine statische Seite und keine Datenbank verwenden. Dadurch wird der Druck auf die Datenbank verringert.
(Empfohlenes Video-Tutorial: php-Video-Tutorial )
3. Wenn es sich um einen verteilten Clusterserver handelt, benötigen Sie einen oder mehrere Warteschlangenserver
Bei Xiaomis und Taobaos Eilkäufen liegt der Schwerpunkt auf dem Moment des Eilkaufs. Sobald Sie sich das Kontingent gesichert haben, können Sie eine Bestellung aufgeben und die Zahlung begleichen. Taobao hingegen konzentriert sich auf die Filterung während der Zahlung. Wenn beispielsweise 10 Artikel verkauft werden sollen, werden diese während der Zahlung gleichzeitig gefiltert Dadurch wird die Anzahl der Elemente Schicht für Schicht im Handumdrehen reduziert.
4. Memcache-Sperre verwenden
product_lock_key ist der Ticket-Sperrschlüssel.
Wenn der Produktschlüssel im Memcached vorhanden ist, können alle Benutzer den Bestellvorgang starten.
Wenn Sie den Zahlungsvorgang starten, speichern Sie zunächst add(product_lock_key, „1″) im Memcached. Wenn die Rückgabe erfolgreich ist, starten Sie den Zahlungsvorgang. Wenn dies fehlschlägt, bedeutet dies, dass bereits jemand in den Zahlungsvorgang eingetreten ist. Der Thread wartet N Sekunden und führt den Add-Vorgang rekursiv aus.
Das obige ist der detaillierte Inhalt vonWas sind die Lösungen mit hoher Parallelität für PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!