Heim >Backend-Entwicklung >PHP-Tutorial >Einige Zusammenfassungen von __halt_compiler
Laut der Einleitung im PHP-Handbuch wird diese Funktion häufig zum Einbetten von Daten in Skripten verwendet, ähnlich wie bei Installationsdateien. Das heißt, nach __halt_compiler(); fügen Sie einige Dateien ein, die nicht kompiliert werden müssen, wie z. B. binäres Rauschen (Unordnung), komprimierte Dateien und andere Dateitypen. Beispielsweise wird der folgende Code verwendet:
// open this file $fp = fopen(__FILE__, 'r'); // seek file pointer to data fseek($fp, __COMPILER_HALT_OFFSET__); // and output it var_dump(stream_get_contents($fp)); // the end of the script execution __halt_compiler(); the installation data (eg. tar, gz, PHP, etc.)
TIPP: Die Konstante __COMPILER_HALT_OFFSET__ wird verwendet Erhalten Sie das Datenwort. Der Anfang des Abschnitts. Zur Verwendung ist __halt_compiler() erforderlich.
Bevor __halt_compiler() in php5.1 eingeführt wurde Mit gzdeflat() komprimierte Dateien enthalten häufig spezielle ASCII-Codes, die vom PHP-Interpreter (Parser) nicht gelesen werden können, was zu Fehlern führt. Um das Auftreten von Fehlern zu verhindern, wird base64_encode() zum Codieren der von gzdeflate() generierten Daten verwendet, wodurch sich die Dateigröße um ca. 33 % erhöht. Das ist eine Verschwendung von Speicher.
$packed = base64_encode(gzdeflate('the old package')); //unpacked $unpacked = base64_decode(gzinflate($packed));Mit __halt_compiler() können wir base64_encode() nicht mehr zum Codieren verwenden, sondern die Daten direkt nach __halt_compiler() einfügen, sodass sie nicht kompiliert werden und ein Fehler auftritt geschehen.// 打开脚本自身文件 $fp = fopen(__FILE__, 'rb'); // 找到数据在文件中的指针 //__COMPILER_HALT_OFFSET__ 将会返回 //__halt_compiler();之后的指针 fseek($fp, __COMPILER_HALT_OFFSET__); // 输出文件 $unpacked = gzinflate(stream_get_contents($fp)); __halt_compiler(); //now here... all the binary gzdeflate already items!!!
Das Obige stellt einige Zusammenfassungen von __halt_compiler vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.