Heim >Backend-Entwicklung >PHP-Tutorial >Das Problem, zu große Phar-Dateien zu packen.
Basierend auf der Inspiration eines Open-Source-Tools wird Stream-Packaging verwendet und token_get_all wird verwendet, um die Leerzeichen in den verwendeten PHP-Dateien zu entfernen. Jetzt beträgt der Paketpreis nur noch 93.000. Vielen Dank für Ihre Aufmerksamkeit.
Eine einfache Datei von mir und ein Symfony-Prozesspaket sind im gepackten Zustand bis zu 125 MB groß, aber die gepackte Größe so vieler Composer-Dateien beträgt nur 1,6 MB, was wirklich rätselhaft ist. Im Anhang finden Sie den Verpackungscode:
<code><?php $pharFilename = 'deploy.phar'; if (file_exists($pharFilename)) { e('remove old file...'); unlink($pharFilename); } $ignoreFiles = [ 'readme.md', 'composer.json', 'composer.lock', '.gitignore', basename(__FILE__), ]; e('putting files...'); try { $phar = new Phar( __DIR__.DIRECTORY_SEPARATOR.$pharFilename, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $pharFilename ); } catch (UnexpectedValueException $e) { echo $e->getMessage(), PHP_EOL; } catch (BadMethodCallException $e) { echo $e->getMessage(), PHP_EOL; } e('building...'); $phar->buildFromDirectory(__DIR__); e('remove unused files...'); array_walk($ignoreFiles, function ($file) use ($phar) { $phar->delete($file); }); e('set stub...'); $phar->setStub($phar->createDefaultStub('deploy.php', 'deploy.php')); e('compress...'); $phar->compressFiles(Phar::BZ2); e('build done.'); function e($string) { echo $string, PHP_EOL; } </code>
Basierend auf der Inspiration eines Open-Source-Tools wird Stream-Packaging verwendet und token_get_all wird verwendet, um die Leerzeichen in den verwendeten PHP-Dateien zu entfernen. Jetzt beträgt der Paketpreis nur noch 93.000. Vielen Dank für Ihre Aufmerksamkeit.
Eine einfache Datei von mir und ein Symfony-Prozesspaket sind im gepackten Zustand bis zu 125 MB groß, aber die gepackte Größe so vieler Composer-Dateien beträgt nur 1,6 MB, was wirklich rätselhaft ist. Im Anhang finden Sie den Verpackungscode:
<code><?php $pharFilename = 'deploy.phar'; if (file_exists($pharFilename)) { e('remove old file...'); unlink($pharFilename); } $ignoreFiles = [ 'readme.md', 'composer.json', 'composer.lock', '.gitignore', basename(__FILE__), ]; e('putting files...'); try { $phar = new Phar( __DIR__.DIRECTORY_SEPARATOR.$pharFilename, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $pharFilename ); } catch (UnexpectedValueException $e) { echo $e->getMessage(), PHP_EOL; } catch (BadMethodCallException $e) { echo $e->getMessage(), PHP_EOL; } e('building...'); $phar->buildFromDirectory(__DIR__); e('remove unused files...'); array_walk($ignoreFiles, function ($file) use ($phar) { $phar->delete($file); }); e('set stub...'); $phar->setStub($phar->createDefaultStub('deploy.php', 'deploy.php')); e('compress...'); $phar->compressFiles(Phar::BZ2); e('build done.'); function e($string) { echo $string, PHP_EOL; } </code>
Ich denke, Sie können das Format in ZIP konvertieren und dann den Archivinhalt über eine Komprimierungssoftware anzeigen. Auf diese Weise können Sie intuitiv die Größe jeder Komponente im Archiv erkennen
<code class="php">$phar->convertToExecutable(Phar::ZIP);</code>Ich hoffe, es hilft dir