(PHP 4, PHP 5, PHP 7)
register_shutdown_function — Betiğin işi bittiğinde çalıştırılacak işlevi tanımlar
Betiğin işi bittiğinde çalıştırılacak kapatma işlevini
işlev
olarak tanımlar.
register_shutdown_function() her gerekişinde bir kere olmak üzere defalarca çağrılabilir. Tanımlanan bir kapatma işlevinin içinde exit() çağrısı yapılırsa betik orada sonlanır ve başka kapatma işlevi çağrılmaz.
PHP 4'ten beri register_shutdown_function() işlevi üzerinden kapatma işlevine ek değiştirgeler aktarılabilmektedir.
işlev
Tanımlanacak kapatma işlevinin ismi.
Kapatma işlevleri isteğin parçası olarak çağrılmakta dolayısıyla bunlardan çıktı göndermek mümkün olmaktadır. Kapatma işlevlerinin içinde çıktı tamponlama ile veri işlemenin şimdilik bir yolu yoktur.
Kapatma işlevleri tüm açık çıktı tamponları kapandıktan sonra çağrıldığından örneğin, zlib.output_compression etkin olsa bile çıktı sıkıştırılmaz.
değiştirge
register_shutdown_function() işlevi üzerinden kapatma işlevine ek değiştirgeler aktarılabilmektedir.
...
Hiçbir değer dönmez.
Sürüm: | Açıklama |
---|---|
4.1.0 | Apache altında, tanımlı kapatma işlevleri istek tamamlandıktan sonra (çıktı tamponlarının gönderilmesi dahil) çağrılır. Dolayısıyla bir daha echo veya print kullanarak tarayıcıya bir şey gönderilemez veya ob_get_contents() kullanarak herhangi bir çıktı tamponunun içeriği alınamaz. Ancak, başlıklar daima gönderilir. |
4.0.0 | Kapatma işlevine değiştirgelerini aktarmak mümkün oldu. |
Örnek 1 - register_shutdown_function() örneği
<?php
function kapat()
{
// bu bizim kapatma işlevimiz.
// Burada betik sonlanmadan önce yapılacak
// son işlemleri gerçekleştiriyoruz.
echo 'Betik işini gerektiği gibi yaptı', PHP_EOL;
}
register_shutdown_function('kapat');
?>
Bilginize:
Normal olarak tanımsız işlevler PHP'de ölümcül hatalara sebep olurlar, fakat register_shutdown_function() ile tanımlanmamış bir işlev çağrıldığında sadece
E_WARNING
seviyesinde bir hata çıktılanır. Ayrıca, PHP'ye özgü sebeplerle bu hata 0. satırda Unknown olarak gösterilir.
Bilginize:
Apache gibi bazı HTTP sunucularında çalışma dizini kapatma işlevi içinde değiştirilebilmektedir.