Heim > Artikel > Backend-Entwicklung > PHP-Methode zur Erzielung von Shopping-Flash-Verkäufen mit hoher Parallelität
Der Inhalt dieses Artikels befasst sich mit der Methode zur Realisierung von Flash-Verkäufen mit hoher Parallelität. Ich hoffe, dass er für Sie hilfreich ist.
Bei Flash-Verkäufen, dem Erwerb von Bahntickets usw. stoßen wir normalerweise auf solche Probleme mit hoher Parallelität. Ich stelle unten vier Lösungen vor:
1 . Dateisperre verwenden
$fp = fopen("order.lock", "r"); if(flock($fp,LOCK_EX)){ //..处理订单的代码 flock($fp,LOCK_UN); } fclose($fp);
2. Nachrichtenwarteschlange verwenden
Wir verwenden oft Memcacheq und 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. Für 400 von 500 Menschen ist es unmöglich, die Ware zu bekommen. Daher können nur die ersten 100 Personen entsprechend der Reihenfolge, in der sie in die Warteschlange gelangen, erfolgreich einkaufen. 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.
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 product_key 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.
Verwandte Empfehlungen:Lösung für PHPExcel-Speicherüberlauf beim Exportieren von Dateien
So implementieren Sie QR-Code in PHP Generieren und Identifizieren (Code)
Was sind die gängigen Methoden für PHP, um Redis zu betreiben? Zusammenfassung der Methoden zum Betrieb von Redis in PHP (mit Code)
Das obige ist der detaillierte Inhalt vonPHP-Methode zur Erzielung von Shopping-Flash-Verkäufen mit hoher Parallelität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!