https://cloud.google.com/storage/docs/object-basics
function upload_object($bucketName, $objectName, $source)
{
$storage = new StorageClient();
$file = fopen($source, 'r');
$bucket = $storage->bucket($bucketName);
$object = $bucket->upload($file, [
'name' => $objectName
]);
printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source),
$bucketName, $objectName);
}
与bigquery操作相比,由于大多数bigquery操作需要很长时间才能完成,因此它们是异步执行的。见https://cloud.google.com/bigquery/docs/managing-jobs
例如当我们使用bigquery客户端将数据导出到存储时。
现在,当我们使用存储客户端加载数据时,
我的问题是存储声明
$object = $bucket->upload($file, [
'name' => $objectName
]);
这个语句是异步执行的吗?由于文档没有显示它是异步执行的,我认为它不是。
谢谢!
答案 0 :(得分:2)
API同步有两个部分 - 服务本身和客户端库。 BigQuery服务是异步的,因为它返回"操作"令牌,您必须轮询以查看该操作何时完成。 GCS服务是同步的,因为当上载API调用完成(或最终调用可恢复的上载)时,该对象就位。
然而,即使使用同步服务,您也可能拥有一个客户端库,因为它可以在后台线程中进行上传,同时您的代码继续使用某种承诺或未来对象。 PHP client library upload method is synchronous, however。
TL; DR:在PHP中上传到GCS是同步的。通话结束后,您的对象就位。