2012-11-21 19 views
15

Co robi register_shutdown_function?Wyjaśnienie: register_shutdown_function

Nie mam żadnego zrozumienia na temat korzystania z niego i co robi. Wiem, że można go używać i ładnie pasuje do niestandardowego programu obsługi błędów, ale nie wiem, przez co przejść, co z nim zrobić, itp.

Czy ktoś mógłby wyjaśnić to w najprostszy sposób? kodowanie newbie?

Odpowiedz

27

Jest to właściwie całkiem prosta funkcja. Więc masz skrypt PHP:

<?php 
    echo "Here is my little script"; 

    function endScript(){ 
     echo "My little Script has finished"; 
    } 

    register_shutdown_function('endScript'); 

?> 

zasadzie to, co się dzieje, jest twój skrypt działa, a kiedy skończy, ponieważ dodaliśmy ten wiersz register_shutdown_function('endScript'); będzie wywoływać endScript funkcyjny i wreszcie wyjście My little script has finished.

Oto trochę więcej od documentation:

Rejestruje zwrotnego być wykonywane po zakończeniu wykonywania skryptu lub EXIT() jest called.Multiple wzywa do register_shutdown_function() może być wykonane, a każdy będzie nazwany w tej samej kolejności, w jakiej zostały zarejestrowane. Jeśli wywołasz exit() w ramach jednej zarejestrowanej funkcji wyłączania, przetwarzanie zostanie całkowicie zatrzymane i żadne inne zarejestrowane funkcje wyłączania nie będą wywoływane.

* Aktualizacja

Wielki stosowanie dla niego jest, kiedy często korzystać z funkcji o nazwie exit() w php.

Na przykład:

<?php 

    function endScript(){ 
     echo "My little Script has finished"; 
    } 
    register_shutdown_function('endScript'); 

    $result = some_intricate_function() 

    if($result == 0){ 
    exit(); 
    } 

    $result = some_other_intricate_function() 

    if($result == 0){ 
    exit(); 
    } 

/* and this keeps reoccurring */ 
?> 

teraz zauważyć, że nawet jeśli nazywają wyjścia wiele razy nie trzeba wywołać funkcję endScript przed zamknięciem za każdym razem. Zarejestrowałeś go na samym początku, a teraz wiesz, że jeśli kiedykolwiek wyjdziesz lub skrypt się skończy, twoja funkcja zostanie wywołana.

Oczywiście moja funkcja wyłączania jest całkiem bezużyteczna; ale może się przydać, jeśli potrzebujesz oczyścić rzeczy (np. Zamknij otwarte uchwyty plików, zapisz niektóre trwałe dane, itp.)

+0

Rozumiem to teraz! Dziękuję za wyjaśnienie! Gdybym mógł. Chciałbym dać +1 –

+0

@DarylGill Zarejestruj się jako zaakceptowana odpowiedź (znacznik wyboru) dla przyszłych użytkowników, którzy odwiedzają ten wątek. –

+0

@FlorinStingaciu +1, nie spodziewałem się, że będzie to wymagało tak wiele wyjaśnień :) – emartel

1

rejestruje hak zamykający, który jest funkcją do wykonania po wyłączeniu skryptu. Przyjmuje funkcję zwrotną jako parametr, który jest funkcją do wykonania.

Polecam sprawdzenie funkcji documentation.