PHP exec() 运行另一个php文件,不等待返回值

PHPexec()运行另一个2.php文件,不等待返回值,这个命令怎么写?exec("命令>null")... PHP exec() 运行另一个2.php文件,不等待返回值,这个命令怎么写?
exec("命令 > null")
展开
 我来答
MS中文网
2015-11-06 · TA获得超过119个赞
知道小有建树答主
回答量:48
采纳率:0%
帮助的人:25.6万
展开全部

可以后台运行,但是建议使用popen和pclose代替exec。同时需要注意php是否添加了环境变量。

<?php
//windows和linux下后台执行方式
$cmd = 'php 2.php';
if(strtoupper(substr(PHP_OS,0,3)) == 'WIN')
{
pclose(popen('start /B '.$cmd, 'r'));
}else
{
pclose(popen($cmd.' > /dev/null &', 'r'));
}
追问
我的是linux空间,试了下2.php并未运行啊
追答

抱歉,下班走的太急了,有一个很重要的因素:后台运行的脚本需要使用绝对路径。虽然1.php和2.php在同级目录下,但是后台系统并不知道。我直接使用linux命令给你完整演示一遍,先将1.php和2.php上传到/root目录下。

1.php代码如下:

<?php
//windows下为php.exe所在目录;例如C:/xampp/php/bin/php
//linux为/usr/local/php/bin/php
$php_path = '/usr/local/php/bin/php';
//后台运行必须使用文件的绝对路径
$php2 = __DIR__ .'/2.php';
$cmd = $php_path.' '.$php2;
//windows和linux下后台执行方式
if(strtoupper(substr(PHP_OS,0,3)) == 'WIN')
{
    pclose(popen('start /B '.$cmd, 'r'));
}else
{
    pclose(popen($cmd.' > /dev/null &', 'r'));
}

file_put_contents('test.txt', __FILE__ .' write at '.date('Y-m-d H:i:s').PHP_EOL);

2.php代码如下:

<?php
//休眠3秒后追加内容到文件
sleep(3);
file_put_contents(__DIR__ .'/test.txt',  __FILE__ .' write at '.date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND);

然后再linux的终端执行以下命令:

cd /root
touch test.txt
chmod 777 test.txt
php 1.php
cat test.txt

运行之后你会看到以下结果:

注意:所有的文件最好都是绝对路径。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式