2016-02-11 15 views
5

Tôi đã đóng gói ứng dụng PHP thành tệp nén Phar thực thi và có trong đó một Lớp với phương thức sẽ truy cập vào dữ liệu meta Phar archive được thực hiện.Làm cách nào để lấy siêu dữ liệu lưu trữ bên trong của phar được thực thi?

Tôi có thể nhận siêu dữ liệu như được hiển thị bên dưới tuy nhiên có vẻ lạ khi tôi tải cùng một Phar bên trong số Phar archive được thực hiện để lấy siêu dữ liệu.

Vì vậy, có phải cách thức thực hiện siêu dữ liệu của Phar không? Có lẽ đọc nó và định nghĩa rằng bên trong Phar's Stub hay gì đó.

<?php 
namespace MyPhar; 
use \Phar; 

class InsideThePhar { 
    public function getPharMetaData() { 
     $phar_self = new Phar(Phar::running(false)); 
     $metadata = $phar_self->getMetadata(); 
     var_dump($metadata); 
     exit(); 
    } 
} 

Trả lời

1

PHP giữ một bộ nhớ cache của file Phar đã nạp, xem http://git.php.net/?p=php-src.git;a=blob;f=ext/phar/phar.c;h=65ebce0f0856fc5a90a62d32dd0bb5c00627706f;hb=HEAD#l96

Bộ nhớ cache được sử dụng khi mở file Phar, vì vậy nó không phải là đắt tiền như mở một file Phar hoàn toàn khác nhau.


Và không, như PHP 7.2 không có cách nào tốt hơn để lấy dữ liệu meta của tệp phar hiện đang chạy.

+0

cảm ơn vì đã trỏ đến nguồn là thời điểm đăng bài tôi không thể tìm thấy nó –

Các vấn đề liên quan