cURL并不总是同步的

时间:2015-12-17 04:51:32

标签: curl dropbox-api php-curl

这个问题来自我的previous之一。我现在使用的修改后的大文件上传脚本如下所示

function uploadFile($local,$remote,$token)
{
 $args = 'Dropbox-API-Arg:'.   
 json_encode(array("path"=>$remote,"mode"=>"overwrite","mute"=>true));
 $headers = array("Authorization: Bearer {$token}",
                  'Content-Type: application/octet-stream',
                   $args);

 $ch = curl_init('https://content.dropboxapi.com/2/files/upload/');
 curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
 curl_setopt($ch,CURLOPT_PUT,1);
 curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');

 $fp = fopen($local,'rb');
 curl_setopt($ch,CURLOPT_INFILE,$fp);
 curl_setopt($ch,CURLOPT_INFILESIZE,filesize($local));
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 $response = curl_exec($ch);
 curl_close($ch);
 fclose($fp);

 //@unlink($local);
 echo $response;
}

我在这里遇到了两个问题。

  1. 从我所看到的情况来看,Dropbox有时会忽略"mute"=>true参数,我最终还是会收到桌面文件更新通知。
  2. 更多问题 - 请查看注释掉的@unlink行。我有这个,因为我需要在Dropbox上传成功后丢弃$local文件。问题是,如果我unlink本地文件一切正常,但Dropbox上传的文件是空的。
  3. 我不清楚为什么会这样。我一直无法找到任何明确的信息,但我的理解是cURL调用始终是同步的。如果不是,那么很难相信Dropbox API的响应是对该文件真正上传到Dropbox的明确确认。

    我在搜索中遇到过关于 cURL有时可能是异步的模糊评论。如果是这种情况我怎么能强迫它同步?我总是可以通过CRON作业单独处理本地文件取消链接,该作业检查其年龄,但这是一个更麻烦的解决方案。

0 个答案:

没有答案