Bir php komut dosyası kirilmaktan ctrl-z, ctrl-c nasıl devre dışı bırakılır

5 Cevap php

Birisi Ctrl + Z, Ctrl + {[(3 ile bir php script çıkmayı engellemek için nasıl araştırma için doğru yönde işaret edebilir )]}?

5 Cevap

Eğer PCNTL (Process Control) ile derlenmiş php ve Windows çalıştıran değilseniz pcntl_signal() kullanabilirsiniz.

here ki ben modifiye ve Ctrl-C Tamam yakalamak için görünen bir örnek vardır:

<?php
declare(ticks = 1);

pcntl_signal(SIGINT, "signal_handler");

function signal_handler($signal) {
    switch($signal) {
        case SIGINT:
            print "Ctrl C\n";
    }
}

while(1) {

}

Eğer SIGSTP hiçbir şey olmuyor için bir işleyici yüklemeye çalıştığınızda, ama eğer ben neden bilmiyorum.

ignveyae_user_abveyat işlevini kullanın. Php.ini Bu Set * ignveyae_user_abveyat * true. DOĞRU komut değişti eğer bir istemci bağlantıyı iptal sonra sona olmayacak, bu nedenle komut bitirmek olacaktır.

ignveyae_user_abveyat(true);

veya

$ php my_script.php -d ignveyae_user_abveyat = true

Kabuk devre dışı olan bunu yapmak için bir yol yoktur.

Source burada.

#!/bin/bash
# at start add
trap "" 2 20

# your script 
echo " Test"

# loop for sleep
sleep 5

20 olan CTRL + Z

2 CTRL + C için

ve bu tuzak tarafından hazırlandı tam listesi - | Komut

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
9) SIGKILL      10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Ancak düz PHP bunu ben yapılabilir eğer o ya da nasıl emin değilim, zordur. Aksi takdirde bazı siteler tuş vuruşlarını yakalamak için javascript önerdi. Bu yardımcı olur umarım.

(Komutun sonuna & eklemek) arka planda çalıştırmak için deneyin:

./your_php_script &

Mümkünse, bir try-catch bloğu içinde ana döngüyü sarın ve (üzgünüm, benim PHP biraz paslı, tam bir emin değil) Abort / Kesme istisna ezebilirim