国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung PHP-Tutorial Yii2-Entwicklung: So kapseln Sie Transaktionen auf eine abschluss?hnliche Weise

Yii2-Entwicklung: So kapseln Sie Transaktionen auf eine abschluss?hnliche Weise

Aug 14, 2018 am 10:41 AM
php yii

Der Inhalt dieses Artikels befasst sich mit der Entwicklung von Yii2: Wie man Transaktionen auf eine abschluss?hnliche Weise kapselt. Ich hoffe, dass er für Sie hilfreich ist.

Beim Ausführen einer Transaktion im Controller lautet der allgemeine Code wie folgt:

$transaction?=?Yii::$app->db->beginTransaction();
try?{
????//一些業(yè)務(wù)代碼
????$transaction->commit();
}?catch?(\Exception?$e)?{
????$transaction->rollBack();
????throw?$e;
}

Also dachte ich, diese Codestruktur ist nur // Einige Gesch?ftscodes sind anders, aber das muss so sein Oftmals wiederholt werden, ist das nicht überflüssig? Und nein! Gut! sehen! Daher habe ich zun?chst versucht, eine ?hnliche Frage zum Stackflow zu finden. Es gibt jedoch eine L?sung, die dabei auftritt, z. B. verschachtelte Transaktionen Klicken Sie hier, um die Fragen und Antworten anzuzeigen.

Unser Yii-Framework bietet eine Methodentransaktion. Auf den ersten Blick scheint es, dass es das Problem der Parameterübergabe nicht l?sen kann. Wenn wir nach unten schauen, hei?t die Methode wie folgt:

rreee

Wir werfen einen Blick auf den Quellcode dieser Methode

Yii::$app->db->transaction(function()?{
????//一些業(yè)務(wù)代碼
});

Diese Methode akzeptiert eine Rückruffunktion und die Isolationsstufe der Transaktion
Von hier aus k?nnen wir sehen, dass diese Methode zwar Duplikate l?st Code, es gibt noch einige Probleme, die ungel?st sind:
Zuerst müssen wir die von dieser Methode ausgel?ste Ausnahme au?erhalb des Empfangs behandeln. Wir k?nnen sie nicht direkt ausl?sen, was für den Client sehr unfreundlich ist.
Zweitens: Ohne Protokollierung ist es nicht einfach, ein Problem zu beheben, selbst wenn es auftritt.
Drittens: Tats?chlich ist es immer noch die erste Frage. Wenn wir jede Ausnahme behandeln und eine Schicht von try...catch... au?erhalb der Transaktionsmethode verschachteln müssen, dann scheint es nicht anders zu sein, als wenn wir nicht kapseln Es?

Nach dem Prinzip, dass Methoden erweitert, aber nicht ge?ndert werden k?nnen, sollten wir diese Methode in unserer eigenen ?ffentlichen Methode überladen. Der überladungscode lautet wie folgt:

/**
?*?Executes?callback?provided?in?a?transaction.
?*
?*?@param?callable?$callback?a?valid?PHP?callback?that?performs?the?job.?Accepts?connection?instance?as?parameter.
?*?@param?string|null?$isolationLevel?The?isolation?level?to?use?for?this?transaction.
?*?See?[[Transaction::begin()]]?for?details.
?*?@throws?\Exception|\Throwable?if?there?is?any?exception?during?query.?In?this?case?the?transaction?will?be?rolled?back.
?*?@return?mixed?result?of?callback?function
?*/
public?function?transaction(callable?$callback,?$isolationLevel?=?null)
{
????$transaction?=?$this->beginTransaction($isolationLevel);
????$level?=?$transaction->level;

????try?{
????????$result?=?call_user_func($callback,?$this);
????????if?($transaction->isActive?&&?$transaction->level?===?$level)?{
????????????$transaction->commit();
????????}
????}?catch?(\Exception?$e)?{
????????$this->rollbackTransactionOnLevel($transaction,?$level);
????????throw?$e;
????}?catch?(\Throwable?$e)?{
????????$this->rollbackTransactionOnLevel($transaction,?$level);
????????throw?$e;
????}

????return?$result;
}

Dann zurück zur Frage So übergeben Sie Parameter: Wir k?nnen Abschlüsse verwenden und einen Teil des Pseudocodes wie folgt ver?ffentlichen:

public?static?function?TransactionExecute(callable?$function,$level=null)
{
????try{
????????\Yii::$app->db->transaction($function,$level);
}catch?(\Exception?$e){
????????//記錄日志
????????\Yii::error($e->getMessage());
????????//這里可以理解成拋出自定義的異常類。
????????(new?self())->returnWayTip(1004,?'trans異常錯誤');
????}
}

Verwandte Empfehlungen:

Was sind die Systemeinstellungen in PHP? Zusammenfassung h?ufig verwendeter Systemeinstellungen in PHP (mit Code)

Wie generiert PHP JSON? PHP-Methodencode zum Generieren von JSON

Das obige ist der detaillierte Inhalt vonYii2-Entwicklung: So kapseln Sie Transaktionen auf eine abschluss?hnliche Weise. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
So verwenden Sie PHP, um soziale Freigabefunktionen zu erstellen. PHP Sharing Interface Integration Practice So verwenden Sie PHP, um soziale Freigabefunktionen zu erstellen. PHP Sharing Interface Integration Practice Jul 25, 2025 pm 08:51 PM

Die Kernmethode zum Aufbau sozialer Freigabefunktionen in PHP besteht darin, dynamisch Freigabelinks zu generieren, die den Anforderungen jeder Plattform entsprechen. 1. Erhalten Sie zuerst die aktuelle Seite oder die angegebenen URL- und Artikelinformationen. 2. Verwenden Sie Urlencode, um die Parameter zu codieren. 3.. Splei? und generieren Teilenverbindungen gem?? den Protokollen jeder Plattform; 4. Zeigen Sie Links im vorderen Ende an, damit Benutzer klicken und freigeben k?nnen. 5. generieren Sie Dynamik OG -Tags auf der Seite, um die Anzeige der Freigabe inhaltlich zu optimieren. 6. Achten Sie darauf, dass Sie den Benutzereingaben entkommen, um XSS -Angriffe zu verhindern. Diese Methode erfordert keine komplexe Authentifizierung, weist nur geringe Wartungskosten auf und eignet sich für die meisten Anforderungen an den Inhaltsaustausch.

So verwenden Sie PHP in Kombination mit AI, um die Erkennung und Optimierung der Textfehlerkorrektur PHP -Syntax zu erreichen So verwenden Sie PHP in Kombination mit AI, um die Erkennung und Optimierung der Textfehlerkorrektur PHP -Syntax zu erreichen Jul 25, 2025 pm 08:57 PM

Um die Textfehlerkorrektur und die Syntaxoptimierung mit AI zu realisieren, müssen Sie die folgenden Schritte ausführen: 1. W?hlen Sie ein geeignetes AI -Modell oder ein geeignetes AI -Modell oder ein geeignetes AI -Modell wie Baidu, Tencent API oder Open Source NLP -Bibliothek aus; 2. Rufen Sie die API über die Curl oder das Guzzle von PHP auf und verarbeiten Sie die Rückgabeergebnisse. 3.. Informationen zur Fehlerkorrektur in der Anwendung anzeigen und erm?glichen den Benutzern, zu w?hlen, ob sie angenommen werden sollen. 4. Verwenden Sie PHP-L und PHP_CODESNIFFER für die Syntaxerkennung und -codeoptimierung. 5. sammeln Sie kontinuierlich Feedback und aktualisieren Sie das Modell oder die Regeln, um den Effekt zu verbessern. Konzentrieren Sie sich bei der Auswahl von AIAPI auf die Bewertung von Genauigkeit, Reaktionsgeschwindigkeit, Preis und Unterstützung für PHP. Die Codeoptimierung sollte den PSR -Spezifikationen folgen, Cache vernünftigerweise verwenden, zirkul?re Abfragen vermeiden, den Code regelm??ig überprüfen und x verwenden

Jenseits des Lampenstacks: Rolle von PHP in der modernen Enterprise -Architektur Jenseits des Lampenstacks: Rolle von PHP in der modernen Enterprise -Architektur Jul 27, 2025 am 04:31 AM

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

Objektrelationszuordnung (ORM) Leistungsstimmen in PHP Objektrelationszuordnung (ORM) Leistungsstimmen in PHP Jul 29, 2025 am 05:00 AM

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugeh?rigen Daten im Voraus laden. 2. W?hlen Sie nur die erforderlichen Felder aus, um das Laden vollst?ndiger Entit?ten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entit?t und rufen Sie Clear () regelm??ig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische ?nderungsverfolgung in Szenarien, in denen ?nderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gew?hrleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Aufbau belastbarer Mikrodienste mit PHP und Rabbitmq Aufbau belastbarer Mikrodienste mit PHP und Rabbitmq Jul 27, 2025 am 04:32 AM

Um einen flexiblen PHP -Microservice zu erstellen, müssen Sie Rabbitmq verwenden, um eine asynchrone Kommunikation zu erreichen. 1. Decken Sie den Dienst über Nachrichtenwarteschlangen ab, um Kaskadenfehler zu vermeiden. 2. Konfigurieren Sie persistente Warteschlangen, anhaltende Nachrichten, Freigabebest?tigung und manuelles ACK, um die Zuverl?ssigkeit zu gew?hrleisten. 3.. Verwenden Sie exponentielle Backoff -Wiederholung, TTL und Dead Letter -Warteschlangenverarbeitungsfehler; 4. Verwenden Sie Tools wie Supervisford, um Verbraucherprozesse zu schützen und Herzschlagmechanismen zu erm?glichen, um die Gesundheit der Service zu gew?hrleisten. und letztendlich die F?higkeit des Systems erkennen, kontinuierlich in Fehlern zu arbeiten.

Erstellen von produktionsbereiten Docker-Umgebungen für PHP Erstellen von produktionsbereiten Docker-Umgebungen für PHP Jul 27, 2025 am 04:32 AM

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. W?hlen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfl?che zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gef?hrliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschr?nken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabh?ngigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbeh?rde zum Verwalten mehrerer Prozesse wie Cron; 6. überprüfen

Python Run Shell -Befehlsbeispiel Python Run Shell -Befehlsbeispiel Jul 26, 2025 am 07:50 AM

Verwenden Sie Subprozess.run (), um die Befehle von Shell sicher auszuführen und die Ausgabe zu erfassen. Es wird empfohlen, Parameter in Listen zu übergeben, um Einspritzrisiken zu vermeiden. 2. Wenn die Shell -Eigenschaften erforderlich sind, k?nnen Sie Shell = True einstellen, aber achten Sie auf die Befehlsinjektion. 3. verwenden subprocess.popen, um die Echtzeit-Ausgangsverarbeitung zu realisieren. 4. Setzen Sie check = true, um Ausnahmen zu werfen, wenn der Befehl fehlschl?gt. 5. Sie k?nnen direkt Ketten anrufen, um die Ausgabe in einem einfachen Szenario zu erhalten. Sie sollten Subprozess vorrangig machen. Die obigen Methoden überschreiben die Kernverwendung der Ausführung von Shell -Befehlen in Python.

VSCODE Settings.json Standort VSCODE Settings.json Standort Aug 01, 2025 am 06:12 AM

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

See all articles