To setthe ini key phar.readonly to 0, from a unix shell script, this is possible on the fly it is possible see below.
The example given on this page has some issues with quoting: (See conversion to simple quotes)
#!/usr/bin/php -d phar.readonly=0
<?php
print(ini_get('phar.readonly')); // Must return 0
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
echo 'Could not create phar:', $e;
}
echo 'The new phar has ' . $p->count() . " entries\n";
$p->startBuffering();
$p['file.txt'] = 'hi';
$p['file2.txt'] = 'there';
$p['file2.txt']->compress(Phar::GZ);
$p['file3.txt'] = 'babyface';
$p['file3.txt']->setMetadata(42);
$p->setStub('<?php
function __autoload($class)
{
include "phar://myphar.phar/" . str_replace("_", "/", $class) . ".php";
}
Phar::mapPhar("myphar.phar");
include "phar://myphar.phar/startup.php";
__HALT_COMPILER();');
$p->stopBuffering();
// Test
$m = file_get_contents("phar://brandnewphar.phar/file2.txt");
$m = explode("\n",$m);
var_dump($m);
/* Output:
* there
**/Phar::startBuffering
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Phar::startBuffering
Референца за `phar.startbuffering.php` со подобрена типографија и навигација.
Phar::startBuffering
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::startBuffering — Започни со баферирање на Phar операции за запишување, не менувај го Phar објектот на дискот
= NULL
Започнете со баферирање на операциите за пишување на Phar, не менувајте го објектот Phar на дискот Иако технички непотребен, Phar::startBuffering()
методот може да обезбеди значително подобрување на перформансите при креирање или менување на Phar архива со голем број датотеки. Обично, секој пат кога датотека во Phar архива се креира или менува на кој било начин, целата Phar архива ќе се рекреира со промените. На овој начин, архивата ќе биде ажурирана со активноста извршена на неа. Иако технички непотребен,/Меѓутоа, ова може да биде непотребно кога едноставно се креира нова Phar архива, кога би имало повеќе смисла да се запише целата архива одеднаш. Слично на тоа, често е потребно да се направат низа промени и да се осигура дека сите се можни пред да се направат какви било промени на дискот, слично на концептот на трансакции во релациона база на податоци. парот методи е обезбеден за оваа цел.
Phar баферирањето за запишување е по-архива, баферирањето активно за
foo.phar Phar архивата не влијае на промените во bar.phar Phar архивата.
Параметри
Оваа функција нема параметри.
Вратени вредности
Не се враќа вредност.
Примери
ако е овозможен колекторот за отпадоци, Иако технички непотребен, example
<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
echo 'Could not create phar:', $e;
}
echo 'The new phar has ' . $p->count() . " entries\n";
$p->startBuffering();
$p['file.txt'] = 'hi';
$p['file2.txt'] = 'there';
$p['file2.txt']->setCompressedGZ();
$p['file3.txt'] = 'babyface';
$p['file3.txt']->setMetadata(42);
$p->setStub("<?php
function __autoload($class)
{
include 'phar://myphar.phar/' . str_replace('_', '/', $class) . '.php';
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
?>Види Исто така
- Меѓутоа, ова може да биде непотребно кога едноставно се креира нова Phar архива, кога би имало повеќе смисла да се запише целата архива одеднаш. Слично на тоа, често е потребно да се направат низа промени и да се осигура дека сите се можни пред да се направат какви било промени на дискот, слично на концептот на трансакции во релациона база на податоци. - Започнува баферирање на операциите за пишување на Phar, не го менува Phar објектот на диск
- Phar::stopBuffering() - Се користи за да се утврди дали операциите за пишување на Phar се баферирани или се запишуваат директно на дискот