Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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_File Upload_Google Api Php Client - Fatal编程技术网

Php 如何恢复崩溃的上载?

Php 如何恢复崩溃的上载?,php,file-upload,google-api-php-client,Php,File Upload,Google Api Php Client,注:此问题标记为13413036的可能副本。 事实并非如此,在这个问题上,他们询问如何使用可恢复上传上传上传文件。 这段代码正是这样做的,而且它是有效的。唯一的问题是,库在长时间运行后崩溃 我正在尝试将一个40GB的文件从云计算实例上传到硬盘 我有一个PHP脚本在命令行上运行,大约一个小时后崩溃 PHP Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling PUT https

注:此问题标记为13413036的可能副本。 事实并非如此,在这个问题上,他们询问如何使用可恢复上传上传上传文件。 这段代码正是这样做的,而且它是有效的。唯一的问题是,库在长时间运行后崩溃

我正在尝试将一个40GB的文件从云计算实例上传到硬盘

我有一个PHP脚本在命令行上运行,大约一个小时后崩溃

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling PUT https://www.goog
leapis.com/upload/drive/v2/files?uploadType=resumable&upload_id=AEnB2UrkY_dh7-GmPp33joiPzhBT3DHY6fg4bgN_PNWVgEYg
IBZmFf0UceJbLS1XeyaJ0bFxdMTNWtPVEAQKIf8uE7HBExuG6g: (503) Service Unavailable' in /var/www/backend/phpsdk/exampl
es/apiClient/src/Google/Http/REST.php:110
Stack trace:
#0 /var/www/backend/phpsdk/examples/apiClient/src/Google/Http/MediaFileUpload.php(183): Google_Http_REST::decode
HttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 /var/www/backend/phpsdk/examples/drive.php(95): Google_Http_MediaFileUpload->nextChunk('\xBA\x9AX\xBA\xAB\x9C
C\x91\x9E1\xDB|\xD0\xD5\xFB...')
#2 {main}
  thrown in /var/www/backend/phpsdk/examples/apiClient/src/Google/Http/REST.php on line 110
如果我再次执行脚本,那么它会在驱动器中创建一个新文件

崩溃后如何恢复初始上载? 我可以在初始化Google\u Http\u MediaFileUpload后设置resumeUri吗? 如何让PHP跳过文件读取到特定点

代码是从示例中复制/粘贴的:

  // Create a media file upload to represent our upload process.
  $media = new Google_Http_MediaFileUpload(
      $client,
      $request,
      mime_content_type(TESTFILE),
      null,
      true,
      $chunkSizeBytes
  );
  $media->setFileSize(filesize(TESTFILE));
  // Upload the various chunks. $status will be false until the process is
  // complete.
  $status = false;
  $handle = fopen(TESTFILE, "rb");
  while (!$status && !feof($handle)) {
    $chunk = fread($handle, $chunkSizeBytes);
    $status = $media->nextChunk($chunk);
  }
  // The final value of $status will be the data from the API for the object
  // that has been uploaded.
  $result = false;
  if ($status != false) {
    $result = $status;
  }
  fclose($handle);
}

这不是复制品,这是合法的错误。我也有同样的问题,我试着在github上发布,主要开发人员说要为nextChunk做一个try-catch,看看在捕获异常后是否可以继续。到目前为止,我已经停止了该模块的开发,但我认为try/catch可能会解决这个问题,除非API是用来防止上传大文件的。我的是17GB,在它停止之前我将它设置为12GB,虽然它也在小时内停止,但并不总是在小时内停止。想要发表评论,但还没有足够的代表。

最后,我通过发送更大的块来修复它,因为我有可用的RAM,所以我将chunkSize设置为20*1024*1024,并在40分钟左右上传


服务器有12GB的RAM。迁移是在谷歌网络内进行的。云计算实例和谷歌硬盘。然而,速度仅为22MBps左右

不可能重复。在这个问题上,他们询问如何使用可恢复上传上传上传文件。这段代码正是这样做的,而且它是有效的。唯一的问题是库在长时间后崩溃。最后,我通过发送更大的块来修复它,因为我有可用的RAM,我将chunkSize设置为20*1024*1024,并在40分钟左右上载。哦,我认为它只能处理1*1024*1024大小,就像它在驱动器示例中所说的那样。让我试试。如果你不介意我问的话,你有多少内存和上传速度?我只是想比较一下,看看我是否也能像你一样运行它…服务器有12GB的RAM。迁移是在谷歌网络内进行的。云计算实例和谷歌硬盘。然而,速度仅为22MBps左右