加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在没有php脚本中断的情况下执行外部程序

发布时间:2020-12-13 17:17:42 所属栏目:PHP教程 来源:网络整理
导读:例如: //test.php#! /usr/local/php/bin/php?phpexec('nohup ./loop.php loop.out');echo 'I am a superman!';//loop.php#! /usr/local/php/bin/php?php$count = 0;while (true) { echo "Loop count:{$count}n"; $count++;} 当我运行./test.php时,我无法得
例如:

//test.php
#! /usr/local/php/bin/php
<?php
exec('nohup ./loop.php > loop.out');
echo 'I am a superman!';

//loop.php
#! /usr/local/php/bin/php
<?php
$count = 0;
while (true) {
    echo "Loop count:{$count}n";
    $count++;
}

当我运行./test.php时,我无法得到输出’我是超人!’,因为你知道loop.php是一个无限循环,test.php被loop.php打断,所以我怎么能得到输出?任何帮助表示赞赏.

解决方法

您可以通过多种方式实现此目标:

使用&运行后台进程:

exec('nohup ./loop.php > loop.out 2>&1 &');

使用pcntl_fork并从子进程运行您的进程:

$pid = pcntl_fork();
 switch ($pid){
   case -1:
     die('Fork failed');
     break;
   case 0:
     exec('nohup ./loop.php > loop.out');
     exit();
   default:
     break;
 }
 echo "I'm not really a superman,just a parent process';

有更多的方法可以做到这一点,只需潜入PHP文档和php中的问题……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读