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