PHP通过cURL上传文件后,何时可以安全删除文件?

PHP通过cURL上传文件后,何时可以安全删除文件?,php,curl,Php,Curl,我正在使用以下命令将循环中的文件上载到远程服务。 由于服务器上的磁盘空间不足,我需要在成功上载后删除这些文件。何时/何地(在我的代码中)对上载的文件使用unlink()安全吗?确保在将其上载到远程服务器之前我没有删除它 在下面的代码段中,$filename是我正在上载的本地文件的名称,$f是我的日志文件 $postfields = array('file' => '@'.$filename, 'username'=>'XXX','password'=>'YYY');

我正在使用以下命令将循环中的文件上载到远程服务。 由于服务器上的磁盘空间不足,我需要在成功上载后删除这些文件。何时/何地(在我的代码中)对上载的文件使用unlink()安全吗?确保在将其上载到远程服务器之前我没有删除它

在下面的代码段中,$filename是我正在上载的本地文件的名称,$f是我的日志文件

 $postfields = array('file' => '@'.$filename, 'username'=>'XXX','password'=>'YYY');

    $retries_limit = 0;

    $ch = curl_init("http://urlofservice.com/request/add");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
    $post_result = curl_exec($ch);

    while((curl_errno($ch) > 0 or $retries_limit == 0) and $retries_limit < 10){
        $retries_limit++;

        if(curl_errno($ch)) {

            fwrite($f,"cURL execution failed for ".$filename." with error ".curl_errno($ch).": " . curl_error($ch) ."#\r\n");       

            $secs = 120;
            sleep($secs);
            fwrite($f,"Sleeped for ".$secs." secs and attempting retry # ".$retries_limit." for ".$filename." #\r\n");  

        }   else {

            fwrite($f,"HTTP POST Request for ".$filename." made successfully #" ."\r\n");

        }
    }

    curl_close($ch);
$postfields=array('file'=>'@'.$filename,'username'=>'XXX','password'=>'YYY');
$retries\u limit=0;
$ch=curl_init(“http://urlofservice.com/request/add");
curl_setopt($ch,CURLOPT_POSTFIELDS,$POSTFIELDS);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_超时,0);
$post\u result=curl\u exec($ch);
而((curl\u errno($ch)>0或$retries\u limit==0)和$retries\u limit<10){
$retries_limit++;
if(旋度误差($ch)){
fwrite($f,“$filename.”的cURL执行失败,错误为“.cURL\u errno($ch)。”:“.cURL\u error($ch)。“\r\n”);
$secs=120;
睡眠(秒);
fwrite($f,“睡眠时间为“$secs.”秒,并尝试重试,#“$retries_limit.”为“$filename.”#\r\n”);
}否则{
fwrite($f,“对“$filename.”的HTTP POST请求已成功完成#“\r\n”);
}
}
卷曲关闭($ch);

我建议您不要,但您可以通过这种方式实现您的目标在服务器上添加一些身份验证,并使用身份验证登录服务器。查看下面的代码作为示例

            $ch = curl_init();
            curl_setopt( $ch, CURLOPT_URL, $curl_url);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            // Only for https server or comment it if not 
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);

            $result= curl_exec($ch);

请注意,您从未真正重试上载。。。!?您需要将
curl\u exec
放在该循环中的某个位置,以便进行实际重试…请查看此项。您应该在之前和之后检查md5文件哈希。如果结果相同,则可以删除该文件safely@deceze:说得好,跳过我的注意,谢谢。@ceadreak:你是什么意思?请提供更多关于这个概念的信息?我不熟悉CULLOPT_定制请求“删除”。它会删除刚刚上传的本地文件吗?我想您可能在远程服务器上使用了delete curl请求。