<?php
/**
* Created by PhpStorm
* User: 北溟有鱼QAQ
* Date: 2021-03-10
* Time: 16:30
* Email: 1769360227@qq.com
*/
print_r($argv)."\n";
print_r(getenv());
<?php
/**
* Created by PhpStorm
* User: 北溟有鱼QAQ
* Date: 2021-03-10
* Time: 16:08
* Email: 1769360227@qq.com
*/
//打印当前父进程的进程id
echo "我是父进程的进程id".posix_getpid().PHP_EOL;
//调用pcntl_fork clone 一个子进程
$pid = pcntl_fork();
//当返回进程id是0的时候,则代表是子进程
if($pid === 0 )
{
echo "我是子进程的进程id是".posix_getpid().PHP_EOL;
// 第一个参数则是php可执行文件 第二个参数则是一个数组,数组的第一个元素则是要执行的程序
pcntl_exec("/usr/bin/php",['test.php','aa','123'],['test']);
}
//子进程执行完成后,父进程要进行回收,如果不回收则会变成僵尸进程,占用系统资源
$exitId = pcntl_wait($status);
//返回退出进程的进程号
if($exitId > 0)
{
echo "子进程退出成功,退出状态码是 ".pcntl_wexitstatus($status).PHP_EOL;
}
我们会看到经过pcntl_exec函数,test.php 里面的代码也执行,这其实就是pcntl_exec的作用,用来执行一个程序
#! /usr/bin/php
<?php
print_r($argv)."\n";
print_r(getenv());
/**
* Created by PhpStorm
* User: 北溟有鱼QAQ
* Date: 2021-03-10
* Time: 16:08
* Email: 1769360227@qq.com
*/
//打印当前父进程的进程id
echo "我是父进程的进程id".posix_getpid().PHP_EOL;
//调用pcntl_fork clone 一个子进程
$pid = pcntl_fork();
//当返回进程id是0的时候,则代表是子进程
if($pid === 0 )
{
echo "我是子进程的进程id是".posix_getpid().PHP_EOL;
// 第一个参数则是php可执行文件 第二个参数则是一个数组,数组的第一个元素则是要执行的程序
pcntl_exec("test",['aa','123'],['test']);
}
//子进程执行完成后,父进程要进行回收,如果不回收则会变成僵尸进程,占用系统资源
$exitId = pcntl_wait($status);
//返回退出进程的进程号
if($exitId > 0)
{
echo "子进程退出成功,退出状态码是 ".pcntl_wexitstatus($status).PHP_EOL;
}
strace -f -s 65500 -o demo4.log php demo4.php
命令来跟踪调用查看
本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn