无需言 做自己 业 ,精于勤 荒于嬉.

PCNTL 函数 pcntl_get_last_error Retrieve the error number set by the last pcntl function which failed

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_get_last_error

(PHP 5 >= 5.3.4, PHP 7, PHP 8)

pcntl_get_last_errorRetrieve the error number set by the last pcntl function which failed

说明

pcntl_get_last_error(): int

警告

本函数还未编写文档,仅有参数列表。

参数

此函数没有参数。

返回值

Returns error code.

参见

  • pcntl_strerror() - Retrieve the system error message associated with the given errno

阅读全文 »

PCNTL 函数 pcntl_sigwaitinfo 等待信号

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

      示例1
<?php 
echo "Blocking SIGHUP signal\n";
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));
echo "Sending SIGHUP to self\n";
posix_kill(posix_getpid(), SIGHUP);
echo "Waiting for signals\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>

阅读全文 »

PCNTL 函数 pcntl_signal 安装一个信号处理器

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

      示例1
<?php 
//使用ticks需要PHP 4.3.0以上版本declare(ticks = 1);
//信号处理函数function sig_handler($signo){
     switch ($signo) {
         case SIGTERM:             // 处理SIGTERM信号             exit;
             break;
         case SIGHUP:             //处理SIGHUP信号             break;
         case SIGUSR1:             echo "Caught SIGUSR1...\n";
             break;
         default:             // 处理所有其他信号     }
}
echo "Installing signal handler...\n";
//安装信号处理器pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");
// 或者在PHP 4.3.0以上版本可以使用对象方法// pcntl_signal(SIGUSR1, array($obj, "do_something");
echo "Generating signal SIGTERM to self...\n";
//向当前进程发送SIGUSR1信号posix_kill(posix_getpid(), SIGUSR1);
echo "Done\n"?>

阅读全文 »

PCNTL 函数 pcntl_waitpid 等待或返回fork的子进程状态

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_waitpid

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_waitpid等待或返回fork的子进程状态

说明

pcntl_waitpid(int $pid, int &$status, int $options = 0): int

挂起当前进程的执行直到参数pid指定的进程号的进程退出, 或接收到一个信号要求中断当前进程或调用一个信号处理函数。

如果pid指定的子进程在此函数调用时已经退出(俗称僵尸进程),此函数 将立刻返回。关于waitpid更详细的规范请参见您系统的waitpid(2)手册。

参数

pid

参数pid的值可以是以下之一:

pid可选值
< -1 等待任意进程组ID等于参数pid给定值的绝对值的进程。
-1 等待任意子进程;与pcntl_wait函数行为一致。
0 等待任意与调用进程组ID相同的子进程。
> 0 等待进程号等于参数pid值的子进程。

注意:

指定-1作为pid的值等同于pcntl_wait() 提供(负的options)。

status

pcntl_waitpid()将会存储状态信息到status 参数上,这个通过status参数返回的状态信息可以用以下函数 pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig()以及 pcntl_wstopsig()获取其具体的值。

options

如果您的操作系统(多数BSD类系统)允许使用wait3,您可以提供可选的options 参数。如果这个参数没有提供,wait将会被用作系统调用。如果wait3不可用,提供参数 options不会有任何效果。options的值可以是0 或者以下两个常量或两个常量“或运算”结果(即两个常量代表意义都有效)。

options可用的值
WNOHANG 如果没有子进程退出立刻返回。
WUNTRACED 子进程已经退出并且其状态未报告时返回。

返回值

pcntl_waitpid()返回退出的子进程进程号,发生错误时返回-1,如果提供了 WNOHANG作为option(wait3可用的系统)并且没有可用子进程时返回0。

参见

  • pcntl_fork() - 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。
  • pcntl_signal() - 安装一个信号处理器
  • pcntl_wifexited() - 检查状态代码是否代表一个正常的退出。
  • pcntl_wifstopped() - 检查子进程当前是否已经停止
  • pcntl_wifsignaled() - 检查子进程状态码是否代表由于某个信号而中断
  • pcntl_wexitstatus() - 返回一个中断的子进程的返回代码
  • pcntl_wtermsig() - 返回导致子进程中断的信号
  • pcntl_wstopsig() - 返回导致子进程停止的信号

阅读全文 »

PCNTL 函数 pcntl_strerror Retrieve the system error message associated with the given errno

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_strerror

(PHP 5 >= 5.3.4, PHP 7, PHP 8)

pcntl_strerrorRetrieve the system error message associated with the given errno

说明

pcntl_strerror(int $errno): string|false

警告

本函数还未编写文档,仅有参数列表。

参数

errno

返回值

Returns error description on success 或者在失败时返回 false.

参见

阅读全文 »

PCNTL 函数 pcntl_sigtimedwait 带超时机制的信号等待

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_sigtimedwait

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

pcntl_sigtimedwait带超时机制的信号等待

说明

pcntl_sigtimedwait(
    array $set,
    array &$siginfo = ?,
    int $seconds = 0,
    int $nanoseconds = 0
): int

函数pcntl_sigtimedwait()实际上与pcntl_sigwaitinfo() 的行为一致,不同在于它多了两个增强参数secondsnanoseconds,这使得脚本等待的事件有了一个时间的上限。

参数

set

要等待的信号列表数组。

siginfo

siginfo是一个输出参数,用来返回信号的信息。更详细情况参见 pcntl_sigwaitinfo()

seconds

超时秒数。

nanoseconds

超时纳秒数。

返回值

成功时,函数pcntl_sigtimedwait()返回信号编号。

参见

阅读全文 »

PCNTL 函数 pcntl_wexitstatus 返回一个中断的子进程的返回代码

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_wexitstatus

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_wexitstatus返回一个中断的子进程的返回代码

说明

pcntl_wexitstatus(int $status): int

返回一个中断的子进程的返回代码。这个函数仅在函数pcntl_wifexited()返回 true.时有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

返回整形的子进程返回代码。

参见

阅读全文 »

PCNTL 函数 pcntl_wifexited 检查状态代码是否代表一个正常的退出。

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_wifexited

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_wifexited检查状态代码是否代表一个正常的退出。

说明

pcntl_wifexited(int $status): bool

检查子进程状态代码是否代表正常退出。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

当子进程状态代码代表正常退出时返回 true ,其他情况返回 false

参见

阅读全文 »

PCNTL 函数 pcntl_wifstopped 检查子进程当前是否已经停止

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_wifstopped

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_wifstopped检查子进程当前是否已经停止

说明

pcntl_wifstopped(int $status): bool

仅查子进程当前是否停止; 此函数只有作用于使用了WUNTRACED作为 option的pcntl_waitpid()函数调用产生的status时才有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

如果子进程当前是停止的返回 true ,其他情况返回 false

参见

阅读全文 »

PCNTL 函数 pcntl_wstopsig 返回导致子进程停止的信号

发表日期:2021-07-01 08:56:16 | 来源: | 分类:PCNTL 函数

pcntl_wstopsig

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_wstopsig返回导致子进程停止的信号

说明

pcntl_wstopsig(int $status): int

返回导致子进程停止的信号编号。这个函数仅在pcntl_wifstopped()返回 true 时有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

返回信号编号。

参见

阅读全文 »

PCNTL 函数 pcntl_fork 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。

发表日期:2021-07-01 08:56:15 | 来源: | 分类:PCNTL 函数

      示例1
<?php 
$pid = pcntl_fork();
//父进程和子进程都会执行下面代码
if ($pid == -1) {
//错误处理:创建子进程失败时返回-1.     
    die('could not fork');
}else if ($pid) {
//父进程会得到子进程号,所以这里是父进程执行的逻辑     
    pcntl_wait($status);
    //等待子进程中断,防止子进程成为僵尸进程。
}else{
    //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
}
?>

阅读全文 »

PCNTL 函数 pcntl_async_signals Enable/disable asynchronous signal handling or return the old setting

发表日期:2021-07-01 08:56:15 | 来源: | 分类:PCNTL 函数

pcntl_async_signals

(PHP 7 >= 7.1.0, PHP 8)

pcntl_async_signalsEnable/disable asynchronous signal handling or return the old setting

说明

pcntl_async_signals(bool $on = null): bool

If the on parameter is omitted, pcntl_async_signals() returns whether asynchronous signal handling is enabled. Otherwise, asynchronous signal handling is enabled or disabled.

参数

on

Whether asynchronous signal handling should be enabled.

返回值

When used as getter (that is without the optional parameter) it returns whether asynchronous signal handling is enabled. When used as setter (that is with the optional parameter given), it returns whether asynchronous signal handling was enabled before the function call.

参见

  • declare

阅读全文 »

PCNTL 函数 pcntl_alarm 为进程设置一个alarm闹钟信号

发表日期:2021-07-01 08:56:15 | 来源: | 分类:PCNTL 函数

pcntl_alarm

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pcntl_alarm为进程设置一个alarm闹钟信号

说明

pcntl_alarm(int $seconds): int

创建一个计时器,在指定的秒数后向进程发送一个SIGALRM信号。每次对 pcntl_alarm()的调用都会取消之前设置的alarm信号。

参数

seconds

等待的秒数。如果seconds设置为0,将不会创建alarm信号。

返回值

返回上次alarm调度(离alarm信号发送)剩余的秒数,或者之前没有alarm调度(译注:或者之前调度已完成) 时返回0

阅读全文 »

PCNTL 函数 pcntl_exec 在当前进程空间执行指定程序

发表日期:2021-07-01 08:56:15 | 来源: | 分类:PCNTL 函数

pcntl_exec

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pcntl_exec在当前进程空间执行指定程序

说明

pcntl_exec(string $path, array $args = ?, array $envs = ?): void

以给定参数执行程序。

参数

path

path必须时可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本(比如文件第一行是#!/usr/local/bin/perl的perl脚本)。 更多的信息请查看您系统的execve(2)手册。

args

args是一个要传递给程序的参数的字符串数组。

envs

envs是一个要传递给程序作为环境变量的字符串数组。这个数组是 key => value格式的,key代表要传递的环境变量的名称,value代表该环境变量值。

返回值

当发生错误时返回 false ,没有错误时没有返回。

阅读全文 »

程序执行函数 proc_nice 修改当前进程的优先级

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

      示例1
<?php 
// Highest priorityproc_nice(-20);
?>

阅读全文 »

程序执行函数 escapeshellcmd shell 元字符转义

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

      示例1
<?php 
// 我们故意允许任意数量的参数$command = './configure '.$_POST['configure_options'];
$escaped_command = escapeshellcmd($command);
 system($escaped_command);
?>

阅读全文 »

程序执行函数 shell_exec 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

      示例1
<?php 
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>

阅读全文 »

程序执行函数 proc_open 执行一个命令,并且打开用来输入/输出的文件指针。

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

      示例1
<?php 
$descriptorspec = array(   0 => array("pipe", "r"),  // 标准输入,子进程从此管道中读取数据   1 => array("pipe", "w"),  // 标准输出,子进程向此管道中写入数据   2 => array("file", "/tmp/error-output.txt", "a") // 标准错误,写入到一个文件);
$cwd = '/tmp';
$env = array('some_option' => 'aeiou');
$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
    // $pipes 现在看起来是这样的:    // 0 => 可以向子进程标准输入写入的句柄    // 1 => 可以从子进程标准输出读取的句柄    // 错误输出将被追加到文件 /tmp/error-output.txt    fwrite($pipes[0], '<?php print_r($_ENV);
 ?>');
    fclose($pipes[0]);
    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);
        // 切记:在调用 proc_close 之前关闭所有的管道以避免死锁。    $return_value = proc_close($process);
    echo "command returned $return_value\n";
}
?>

      示例2
<?php 
$descriptorspec = [STDIN, STDOUT, STDOUT];
$cmd = '"findstr" "search" "filename.txt"';
$proc = proc_open($cmd, $descriptorspec, $pipes);
proc_close($proc);
?>

      示例3
$cmd = '""findstr" "search" "filename.txt""';

阅读全文 »

程序执行函数 proc_terminate 杀除由 proc_open 打开的进程

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

proc_terminate

(PHP 5, PHP 7, PHP 8)

proc_terminate杀除由 proc_open 打开的进程

说明

proc_terminate(resource $process, int $signal = 15): bool

process (由 proc_open() 函数创建) 发送信号通知其终止。 proc_terminate() 调用之后将会立即返回, 而不会等待进程终止。

可以使用 proc_terminate() 终止进程 并且继续其他的任务。 可以使用 proc_get_status() 函数来检查进程是否已经终止。

参数

process

proc_open() 打开的 resource

signal

可选参数,仅用于 POSIX 操作系统。 表示调用系统命令 kill(2) 来向进程发送的信号。 默认值为 SIGTERM

返回值

返回进程的终止状态。

更新日志

版本 说明
5.2.2 之前的版本被用来销毁进程 resource

参见

  • proc_open() - 执行一个命令,并且打开用来输入/输出的文件指针。
  • proc_close() - 关闭由 proc_open 打开的进程并且返回进程退出码
  • proc_get_status() - 获取由 proc_open 函数打开的进程的信息

阅读全文 »

程序执行函数 proc_get_status 获取由 proc_open() 函数打开的进程的信息

发表日期:2021-07-01 08:56:11 | 来源: | 分类:程序执行函数

proc_get_status

(PHP 5, PHP 7, PHP 8)

proc_get_status获取由 proc_open() 函数打开的进程的信息

说明

proc_get_status(resource $process): array

proc_get_status() 函数可以获取由 proc_open() 函数打开的进程的信息。

参数

process

要检查的由 proc_open() 打开的进程 resource

返回值

如果调用成功,则返回一个包含了进程信息的 array,如果发生错误,返回 false。 返回的数组包含下列元素:

元素类型描述
command string 传入 proc_open() 函数的命令行字符串。
pid int 进程 ID
running bool true 表示进程还在运行中, false 表示进程已经终止
signaled bool true 表示子进程被未捕获的信号所终止。 在 Windows 平台永远为 false
stopped bool true 表示子进程被信号停止。 在 Windows 平台永远为 false
exitcode int 进程的退出码(仅在 runningfalse 时有意义)。 仅在第一次调用此函数时会返回实际的值, 后续的调用将返回 -1
termsig int 导致子进程终止执行的信号值 (仅在 signaledtrue 时有意义)。
stopsig int 导致子进程停止执行的信号值 (仅在 stoppedtrue 时有意义)。

参见

  • proc_open() - 执行一个命令,并且打开用来输入/输出的文件指针。

阅读全文 »

全部博文(1580)
集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。