RE: Why not jar for phar? (was Re: [PHP-DEV] PHAR was PHP 5.3 Suggested Feature List)
| From: | P) | Date: | Wed, 12 Sep 2007 14:44:49 +0000 |
| Subject: | RE: Why not jar for phar? (was Re: [PHP-DEV] PHAR was PHP 5.3 Suggested Feature List) | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-32296@lists.php.net to get a copy of this message | ||
> From: Dmitry Stogov [mailto:dmitry@zend.com]
>
> I've attached my PHAR variation that was made some time ago
> just to prove the concept. It uses standard TAR format and
> doesn't use any external libraries.
>
> In case if you call "php test.tar.gz", PHP (with this
> extension) will execute file main.php from the archive.
>
> I cannot remember wich version of PHAR I used in benchmarks,
> but TAR was faster.
In PHAR, as well as in PHK, we decided not to use the tar format because it is purely
sequential.
If you use a 3-file tar archive, it is normal to be faster with tar than PHAR or PHK,
as reading the index has a cost. But this cost is almost constant. So, if you rebuild
your test to access the 100th file of a 1 Mb archive, which is not uncommon for a
typical package, and you find that tar is still faster, I promise to consider
converting the PHK file format to tar.
Actually, using the PHP cache systems, the speed to access the archive's files is less
important, as these accesses will occur only one per file, to populate the cache. So,
it would not be impossible to use the tar format. The problem, then, is that we'll need
at least a precise order for the files in the archive, or we'll have to remove the
stub/prolog. I don't know for phar but, in PHK, removing the prolog would also remove a
lot of features, like the need of a separate runtime software, instead of providing it
in the archive. We would also loose the ability to directly include/require the
archive. This would also have huge implications on the webinfo mode and on the
integrated unit tests feature.
If we want to keep a precise file order, along with the tar format, it is still worse
because we would have some 'pseudo-tar' files, which can be viewed and extracted with
tar, but generated only through a proprietary tool. And, if somebody extracts and
regenerates an archive with tar, it will seem to be the same, from a tar point of view,
but it won't work anymore!
Francois