php-Parallelitätslösungen umfassen: 1. Dateisperre; 2. Nachrichtenwarteschlange, wie Memcacheq, Redis usw. 3. Warteschlangenserver;
Lösung:
(Empfohlenes Video-Tutorial: Java-Video-Tutorial)
1. Verwenden Sie die Dateisperre
$fp = fopen("order.lock", "r");
if(flock($fp,LOCK_EX)){
//..处理订单的代码
flock($fp,LOCK_UN);
}
fclose($fp);
Nach dem Login kopieren
2. Verwenden Sie häufig Memcacheq und Radis.
Zum Beispiel: Wenn Benutzer 100 Tickets ergattern können, können diese 100 Tickets im Cache abgelegt werden und müssen beim Lesen und Schreiben nicht gesperrt werden. 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. 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 Cluster-Server handelt, werden ein oder mehrere Warteschlangenserver benötigt
Der Eilkauf von Xiaomi und Taobao ist immer noch etwas anders. Sobald Sie sich die Quote gesichert haben, gehört sie Ihnen . Sie können einen Auftrag zur Abrechnung erteilen. 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. Verwenden Sie die Memcache-Sperre
product_lock_key, um den Ticketschlüssel zu sperren
Wenn der Produktschlüssel im Memcache 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:
php-Training
Das obige ist der detaillierte Inhalt vonWas sind die PHP-Parallelitätslösungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!