Heim >Backend-Entwicklung >PHP-Problem >Was sind die PHP-Parallelitätslösungen?

Was sind die PHP-Parallelitätslösungen?

王林
王林Original
2020-11-05 15:03:072881Durchsuche

php-Parallelitätslösungen umfassen: 1. Dateisperre; 2. Nachrichtenwarteschlange, wie Memcacheq, Redis usw. 3. Warteschlangenserver;

Was sind die PHP-Parallelitätslösungen?

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);

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn