我正在使用允许我通过本地文件夹和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);
答案 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文件包含诸如上传和删除原始文件之类的命令; 我的工作正常