(PHP >= 8.0.0, PECL zip >= 1.17.0)
ZipArchive::registerCancelCallback β Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ callback-ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΌΠ΅Π½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΊΡΡΡΠΈΡ Π°ΡΡ ΠΈΠ²Π°
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ callback-ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΌΠ΅Π½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΊΡΡΡΠΈΡ Π°ΡΡ
ΠΈΠ²Π°.
callback
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ZIP-Π°ΡΡ ΠΈΠ² php.zip ΠΈ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΡ ΠΈΠ²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»Π°
<?php
$zip = new ZipArchive();
if ($zip->open('php.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
$zip->addFile(PHP_BINARY, 'php');
$zip->registerCancelCallback(function () {
return ($someruncondition ? -1 : 0);
});
$zip->close();
}ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π€ΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π°, Π΅ΡΠ»ΠΈ PHP ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Ρ libzip β₯ 1.6.0.