Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP后台上传_Php_Upload_Background - Fatal编程技术网

PHP后台上传

PHP后台上传,php,upload,background,Php,Upload,Background,我使用的表单允许我通过本地文件夹和FTP上传文件。 所以我想通过ftp移动文件(已经可以使用了) 由于性能原因,我选择在后台运行此进程,因此我使用nfcftpput(linux) 在CLI中,以下命令工作正常: ncftpput-b-u名称-p密码-p 1980 127.0.0.1/upload//home/Downloads/upload.zip (知道b参数触发后台进程) 但是,如果我通过PHP运行它,它将不起作用(如果没有-b参数,它会起作用) PHP代码: $cmd = "ncftppu

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

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

在CLI中,以下命令工作正常: ncftpput-b-u名称-p密码-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);

请尝试以下操作之一:

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


2) 尝试php的proc_open函数

尝试在命令末尾添加“&”,这将在linux级别上实现。如果“上一个”不起作用,也可以尝试shell_exec()。这包含如何正确生成后台进程的信息。请注意,提供此功能的扩展可能在您的PHP安装中未激活。

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

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文件包含诸如上载和删除由分隔的原始文件的命令;
我觉得这很好

你在php网页中有脚本,你想启动后台进程吗?-永远不会发生!或者直接在服务器中编写php脚本,比如:/usr/bin/php-f/path/to/script.php-crontab like?