如何禁用ctrl-z,ctrl-c打破php脚本

tek*_*olo 17 php signals

有人能指出我正确的方向来研究如何防止用户用Ctrl+ Z,Ctrl+ 打破PHP脚本C吗?

Tom*_*igh 18

如果你有使用PCNTL(过程控制)编译的PHP 并且没有运行Windows,你可以使用pcntl_signal().

有一个例子在这里,我修改,它似乎赶上按Ctrl-C确定:

<?php
declare(ticks = 1);

pcntl_signal(SIGINT, "signal_handler");

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

while(1) {

}
Run Code Online (Sandbox Code Playgroud)

如果你试图安装一个处理程序SIGSTP没有任何反应,但我不知道为什么.

  • @silent:谢谢。我显然不知道我在说什么 (2认同)

Jus*_*ire 5

有一种方法可以通过在shell中禁用来实现它.

来源就在这里.

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

# your script 
echo " Test"

# loop for sleep
sleep 5
Run Code Online (Sandbox Code Playgroud)

20表示CTRL + Z.

2是CTRL + C.

这是陷阱创建的完整列表 - | 命令

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
Run Code Online (Sandbox Code Playgroud)

但要直接从PHP做到这一点很困难,我不知道该怎么做或者是否可以做到.否则一些网站建议使用javascript来捕捉击键.希望这可以帮助.


sil*_*ent 2

尝试在后台运行它(将 & 添加到命令末尾):

./your_php_script &
Run Code Online (Sandbox Code Playgroud)