Heim > Backend-Entwicklung > PHP-Tutorial > Das Problem, zu große Phar-Dateien zu packen.

Das Problem, zu große Phar-Dateien zu packen.

WBOY
Freigeben: 2023-03-02 11:24:02
Original
1120 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Ich hoffe, es hilft dir

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage