PHP中的后台上传

时间:2010-05-25 10:03:34

标签: php upload background

我正在使用允许我通过本地文件夹和FTP上传文件的表单。 所以我想通过ftp(已经有效)移动文件

由于性能原因,我选择此过程在后台运行所以我使用nfcftpput(linux)

在CLI中,以下命令可以完美地运行: ncftpput-b-u name -p password -P 1980 127.0.0.1 / upload / /home/Downloads/upload.zip

(知道b参数触发后台进程) 但是如果我通过PHP运行它就不起作用(没有-b参数)

PHP代码:

$cmd = "ncftpput -b -u name -p password -P 1980 127.0.0.1 /upload/ /home/Downloads/upload.zip";
$return = exec($cmd);

4 个答案:

答案 0 :(得分:1)

请尝试以下方法之一:

1)使用命令$ cmd =“ncftpput -b -u name -p password -P 1980 127.0.0.1 / upload / /home/Downloads/upload.zip&”; (注意&)

2)尝试php的proc_open函数http://php.net/manual/en/function.proc-open.php

答案 1 :(得分:0)

尝试添加'&'在命令结束时,这将在Linux级别上分叉。如果以前不起作用,也可以尝试使用shell_exec()。

答案 2 :(得分:0)

看看pcntl_fork。此user note包含有关如何正确生成后台进程的信息。请注意,在PHP安装中可能不会激活提供此功能的扩展。

答案 3 :(得分:0)

对我来说,最好的解决方案是以下代码:

function executeBackgroundProces($command) {

    $command = $command . ' > /dev/null 2>&1 & echo $!';
    exec ( $command, $op );
    $pid = ( int ) $op [0];
    if ($pid != "")
        return $pid;

    return false;
}

我运行的命令是:“ls bashfile” bash文件包含诸如上传和删除原始文件之类的命令; 我的工作正常