


PHP: Detaillierte Erläuterung der Beispiele für Ressourcendatentypen
Was sind Ressourcendatentypen?
Der Ressourcendatentyp wird in PHP4 eingeführt. Ressource ist ein spezieller Variablentyp, der einen Verweis auf eine externe Ressource enthält: beispielsweise eine geöffnete Datei, eine Datenbankverbindung, einen Grafikbereich usw.
Ressourcen werden durch spezielle Funktionen erstellt und genutzt.
Verwendung von Ressourcenvariablen in PHP
$fp = fopen("test.txt", "rw"); var_dump($fp); fclose($fp);
Ergebnis drucken: Ressource(5) vom Typ (Stream)
Nummer 5: Gibt an, dass die Ressourcen-ID 5 ist, Speziell Die Bedeutung wird später eingeführt.
stream: Name des Ressourcentyps.
Ressourcen-ID
Der Kernel speichert die registrierten Ressourcenvariablen in einer HashTable und verwendet den Schlüssel in der HashTable, in der sich die Ressource befindet, als Ressourcen-ID.
Tatsächlich speichert die Ressourcenvariable in PHP also tatsächlich eine Ganzzahl, und die entsprechende Ressource in der HashTable wird über diese ID gefunden.
#define Z_RESVAL(zval) (zval).value.lval #define Z_RESVAL_P(zval) Z_RESVAL(*zval) #define Z_RESVAL_PP(zval) Z_RESVAL(**zval)
Das obige Makro ist die von ZE im Kernel verwendete API, um Ressourcenvariablen Werte zuzuweisen. Es ist ersichtlich, dass es sich tatsächlich um eine Zuweisung an eine Ganzzahlvariable handelt.
Ressourcentypname
Um Ressourcentypen zu unterscheiden, müssen wir Typnamen für die von uns definierten Ressourcen definieren.
#define MY_RES_NAME "my_resource" //资源类型名称,PHP通过var_dump打印资源变量时会看到这个名称 static int my_resource_descriptor; ZEND_MINIT_FUNCTION(jinyong) { my_resource_descriptor = zend_register_list_destructors_ex(NULL, NULL, MY_RES_NAME, module_number);//向内核中注册新的资源类型 }
ZEND_MINIT_FUNCTION(jinyong) führt alle erweiterten ZEND_MINIT_FUNCTIONs aus, wenn PHP als SAPI in den Speicher geladen wird (z. B. die mod_php5-Erweiterung von Apache).
Wobei jinyong der Name der aktuellen Erweiterung ist. Der Name der Erweiterung lautet derzeit beispielsweise jinyong
Zum leichteren Verständnis stellen wir uns das als die Erweiterung vor, die während der Initialisierung einen neuen Ressourcentyp beim Kernel registriert.
Ressourcenvariable erstellen
Der Ressourcentyp wurde erfolgreich registriert und ein unterscheidender Typname wurde für die Ressource definiert. Variablen für diese Ressource können jetzt verwendet werden.
Implementieren Sie die fopen-Funktion in PHP:
PHP_FUNCTION(my_fopen) { zval *res; char *filename, *mode; int filename_strlen, mode_strlen; FILE *fp; if(zend_parse_parameters(ZEND_NUM_ARGS TSRMLS_CC, "s|s", &filename, &filename_strlen, &mode, &mode_strlen) == FAILURE){ RETURN_FALSE; } //此处省略了对参数的有效性验证 fp = fopen(filename, mode); ZEND_REGISTER_RESOURCE(res, fp, my_resource_descriptor);//向全局变量&EG(regular_list)中注册资源变量,并将对应HashTable的ID赋值给res RETURN_RESOURCE(res);//向PHP返回资源变量 }
Hier wird die Funktion namens my_fopen in PHP definiert. my_fopen(string $file_name, string $mode)
implementiert die fclose-Funktion in PHP:
PHP_FUNCTION(my_fclose) { zval *res; FILE *fp; if(zend_parse_parameters(ZEND_NUM_ARGS TSRMS_CC, "r", &res) == FAILURE){ RETURN_FALSE; } if(Z_TYPE_P(res) == IS_RESOURCE){//判断变量类型是否是资源类型 zend_hash_index_del(&EG(regular_list), Z_RESVAL_P(res));//EG就类似于PHP中的$_GLOBALS。在全局资源变量regular_list中删除对应ID的资源 }else{ php_error_docref(NULL TSRMLS_CC, E_WARNING, "参数必须是资源类型变量"); RETURN_FALSE; } RETURN_TRUE; }
definiert die Funktion namens my_fclose in PHP. my_fclose($resource)
Mit der Methode in der benutzerdefinierten Erweiterung in PHP kann
my_fwrite($fp, "aaTest"); var_dump($fp); my_fclose($fp); var_dump($fp);
normal geöffnet und geschlossen werden Ressource.
Ressourcen freigeben
Da die PHP4-Zend-Engine ein Ressourcenzählsystem einführt, kann sie automatisch erkennen, dass auf eine Ressource nicht mehr verwiesen wird (genau wie Java). In diesem Fall werden alle von dieser Ressource verwendeten externen Ressourcen vom Garbage Collection-System freigegeben. Daher ist es selten erforderlich, manuell Speicher mithilfe einer Free-Result-Funktion freizugeben.
Hinweis: Permanente Datenbankverbindungen sind etwas Besonderes, sie werden vom Garbage-Collection-System nicht zerstört.
Im nächsten Abschnitt erklären wir den „Nullwert (null) “ unter den beiden speziellen Datentypen.
Das obige ist der detaillierte Inhalt vonPHP: Detaillierte Erläuterung der Beispiele für Ressourcendatentypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In einer MySQL-Datenbank können Geschlechtsfelder normalerweise im ENUM-Typ gespeichert werden. ENUM ist ein Aufzählungstyp, der es uns ermöglicht, aus einer Menge vordefinierter Werte einen als Wert eines Feldes auszuwählen. ENUM ist eine gute Wahl, wenn eine feste und begrenzte Option wie das Geschlecht dargestellt wird. Schauen wir uns ein konkretes Codebeispiel an: Angenommen, wir haben eine Tabelle namens „users“, die Benutzerinformationen, einschließlich Geschlecht, enthält. Jetzt wollen wir ein Feld für das Geschlecht erstellen, wir können die Tabellenstruktur so gestalten: CRE

Auf der 115-Netzwerkfestplatte befinden sich viele Ressourcen. Wie findet man also Ressourcen? Benutzer können in der Software nach den benötigten Ressourcen suchen, dann die Download-Schnittstelle aufrufen und dann das Speichern auf der Netzwerkfestplatte auswählen. Diese Einführung in die Methode zum Auffinden von Ressourcen auf 115 Netzwerkfestplatten kann Ihnen den spezifischen Inhalt erklären. Im Folgenden finden Sie eine detaillierte Einführung. Schauen Sie sich um. Wie finde ich Ressourcen auf 115 Netzwerkfestplatten? Antwort: Suchen Sie den Inhalt in der Software und klicken Sie dann, um ihn auf der Netzwerkfestplatte zu speichern. Ausführliche Einführung: 1. Geben Sie zunächst die gewünschten Ressourcen in der App ein. 2. Klicken Sie dann auf den angezeigten Schlüsselwort-Link. 3. Rufen Sie dann die Download-Oberfläche auf. 4. Klicken Sie im Inneren auf „Auf Netzwerkfestplatte speichern“.

In MySQL ist der ENUM-Aufzählungstyp der am besten geeignete Datentyp für Geschlechtsfelder. Der Enumerationstyp ENUM ist ein Datentyp, der die Definition einer Menge möglicher Werte ermöglicht. Das Geschlechtsfeld eignet sich für die Verwendung des ENUM-Typs, da das Geschlecht normalerweise nur zwei Werte hat, nämlich männlich und weiblich. Als Nächstes werde ich anhand spezifischer Codebeispiele zeigen, wie man in MySQL ein Geschlechtsfeld erstellt und den Aufzählungstyp ENUM zum Speichern von Geschlechtsinformationen verwendet. Im Folgenden sind die Schritte aufgeführt: Erstellen Sie zunächst eine Tabelle mit dem Namen „users“ in MySQL, einschließlich

Han Xiaoquan ist eine Software, mit der man viele koreanische Dramen ansehen kann. Warum gibt es also plötzlich keine Ressource mehr? Aufgrund von Netzwerkproblemen, Versionsproblemen oder Urheberrechtsproblemen verfügt diese Software möglicherweise nicht über Ressourcen. Dieser Artikel über den Grund, warum Han Xiaoquan plötzlich keine Ressourcen mehr hat, kann Ihnen den spezifischen Inhalt erklären. Im Folgenden finden Sie eine detaillierte Einführung. Schauen Sie sich um. Warum hatte Han Xiaoquan plötzlich keine Ressourcen mehr? Antwort: Aufgrund von Netzwerkproblemen, Versionsproblemen und Urheberrechtsproblemen, detaillierte Einführung: 1. Lösung von Netzwerkproblemen: Sie können ein anderes Netzwerk auswählen und sich dann erneut bei der Software anmelden, um es zu versuchen . 2. Lösung von Versionsproblemen: Benutzer können die neueste Version dieser Software von der offiziellen Website herunterladen. 3. Lösungen für Urheberrechtsprobleme: Einige koreanische Dramen werden aufgrund von Urheberrechtsproblemen aus den Regalen genommen. Sie können andere koreanische Dramen zum Ansehen auswählen.

Python wird aufgrund seiner einfachen und leicht lesbaren Syntax in einer Vielzahl von Bereichen häufig verwendet. Es ist von entscheidender Bedeutung, die Grundstruktur der Python-Syntax zu beherrschen, um sowohl die Programmiereffizienz zu verbessern als auch ein tiefes Verständnis für die Funktionsweise des Codes zu erlangen. Zu diesem Zweck bietet dieser Artikel eine umfassende Mindmap, die verschiedene Aspekte der Python-Syntax detailliert beschreibt. Variablen und Datentypen Variablen sind Container, die zum Speichern von Daten in Python verwendet werden. Die Mindmap zeigt gängige Python-Datentypen, einschließlich Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, boolesche Werte und Listen. Jeder Datentyp hat seine eigenen Eigenschaften und Betriebsmethoden. Operatoren Operatoren werden verwendet, um verschiedene Operationen an Datentypen auszuführen. Die Mindmap deckt die verschiedenen Operatortypen in Python ab, z. B. arithmetische Operatoren und Verhältnisse

Detaillierte Erläuterung der Verwendung boolescher Typen in MySQL MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. In praktischen Anwendungen ist es häufig erforderlich, boolesche Typen zur Darstellung logischer wahrer und falscher Werte zu verwenden. In MySQL gibt es zwei Darstellungsmethoden vom booleschen Typ: TINYINT(1) und BOOL. In diesem Artikel wird die Verwendung boolescher Typen in MySQL ausführlich vorgestellt, einschließlich der Definition, Zuweisung, Abfrage und Änderung boolescher Typen, und anhand spezifischer Codebeispiele erläutert. 1. Der boolesche Typ ist in MySQL definiert und kann sein

Beim Entwerfen von Datenbanktabellen ist die Auswahl des geeigneten Datentyps für die Leistungsoptimierung und Datenspeichereffizienz sehr wichtig. In der MySQL-Datenbank gibt es eigentlich keine sogenannte beste Wahl für den Datentyp zum Speichern des Geschlechtsfelds, da das Geschlechtsfeld im Allgemeinen nur zwei Werte hat: männlich oder weiblich. Aus Gründen der Effizienz und Platzersparnis können wir jedoch einen geeigneten Datentyp zum Speichern des Geschlechtsfelds auswählen. In MySQL ist der Aufzählungstyp der am häufigsten verwendete Datentyp zum Speichern von Geschlechtsfeldern. Ein Aufzählungstyp ist ein Datentyp, der den Wert eines Felds auf einen begrenzten Satz beschränken kann.

Im Spiel Dying Light kann es sein, dass viele Spieler in der Anfangsphase aufgrund fehlender Ressourcen von unzähligen Zombies umgeben sind. Manchmal gehen sie auch Risiken ein, um gefangene Wanderer zu retten, und diese Wanderer können auch einige Nebenaufgaben übernehmen, die nach Abschluss reichlich belohnt werden. Dying Light Unbegrenzter Ressourcenerwerb Suchen Sie zunächst ein Hilfspaket und legen Sie es in das Lager. Wählen Sie auf der Startseite des [Inventars] einen Artikel mit einer größeren Menge aus und klicken Sie bei Auswahl mit der linken Maustaste. 2. Drücken Sie dann [ESC], ohne die Maus zu bewegen. Drücken Sie einfach einmal kurz, wenn Sie das Gefühl haben, dass die Lagerseite angezeigt wird . Bewegen Sie die Maus nicht und halten Sie sie nicht gedrückt. Die Aufforderung zum Speichern der Elemente wird angezeigt. 3Finden Sie abschließend das [Katastrophenpaket] im Lager und lassen Sie sich von ihm dazu auffordern
