PHP exec() 运行另一个php文件,不等待返回值
PHPexec()运行另一个2.php文件,不等待返回值,这个命令怎么写?exec("命令>null")...
PHP exec() 运行另一个2.php文件,不等待返回值,这个命令怎么写?
exec("命令 > null") 展开
exec("命令 > null") 展开
1个回答
展开全部
可以后台运行,但是建议使用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
运行之后你会看到以下结果:
注意:所有的文件最好都是绝对路径。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询