尝试获取包含许多页面的 Google 文档时出现 503 错误

问题描述 投票:0回答:1

我遇到了 Google Drive API 的问题。 我在 Ubuntu(版本 22.04.3 LTS)上使用 PHP(版本 8.1.27)和 Symfony 框架(版本 6.4.*)。我合并了最新的 Google API 库(版本 2.15.3)。

检索页数较少(300-400 页)的文件时没有任何问题。但我有一个大约有 950-1000 页的文件。当我尝试获取该文件时,总是会出现 503 错误。 代码如下:

        try {
        $service = new Docs($client);
        $doc = $service
            ->documents
            ->get($file->id);
        $drive = new Drive($client);
        $fileDetails = $drive->files->get($doc->getDocumentId(), ["fields" => "createdTime,modifiedTime"]);
    } catch (\Throwable $t) {
        error_log($t->getCode(), 0);
        error_log($t->getMessage(), 0);
        error_log($t->getTraceAsString(), 0);
    }

而我收到的回复信息如下:

Connection refused for URI https://docs.googleapis.com/v1/documents/1SDq_m48Ctg***********
#0 /var/www/*****.com/vendor/google/auth/src/Middleware/AuthTokenMiddleware.php(117): GuzzleHttp\Handler\StreamHandler->__invoke()
#1 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(35): Google\Auth\Middleware\AuthTokenMiddleware->Google\Auth\Middleware\{closure}()
#2 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\PrepareBodyMiddleware->__invoke()
#3 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}()
#4 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/Middleware.php(63): GuzzleHttp\RedirectMiddleware->__invoke()
#5 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/HandlerStack.php(75): GuzzleHttp\Middleware::GuzzleHttp\{closure}()
#6 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/Client.php(333): GuzzleHttp\HandlerStack->__invoke()
#7 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/Client.php(107): GuzzleHttp\Client->transfer()
#8 /var/www/*****.com/vendor/guzzlehttp/guzzle/src/Client.php(124): GuzzleHttp\Client->sendAsync()
#9 /var/www/*****.com/vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php(47): GuzzleHttp\Client->send()
#10 /var/www/*****.com/vendor/google/apiclient/src/Http/REST.php(84): Google\Auth\HttpHandler\Guzzle6HttpHandler->__invoke()
#11 [internal function]: Google\Http\REST::doExecute()
#12 /var/www/*****.com/vendor/google/apiclient/src/Task/Runner.php(187): call_user_func_array()
#13 /var/www/*****.com/vendor/google/apiclient/src/Http/REST.php(66): Google\Task\Runner->run()
#14 /var/www/*****.com/vendor/google/apiclient/src/Client.php(926): Google\Http\REST::execute()
#15 /var/www/*****.com/vendor/google/apiclient/src/Service/Resource.php(238): Google\Client->execute()
#16 /var/www/*****.com/vendor/google/apiclient-services/src/Docs/Resource/Documents.php(91): Google\Service\Resource->call()
#17 /var/www/*****.com/src/Service/Google/DocsApiService.php(59): Google\Service\Docs\Resource\Documents->get()
#18 /var/www/*****.com/src/Command/GranularAudience/ImportDocsCommand.php(83): App\Service\Google\DocsApiService->getLinkedCustomListStructure()
#19 /var/www/*****.com/vendor/symfony/console/Command/Command.php(326): App\Command\GranularAudience\ImportDocsCommand->execute()
#20 /var/www/*****.com/vendor/symfony/console/Application.php(1096): Symfony\Component\Console\Command\Command->run()
#21 /var/www/*****.com/vendor/symfony/framework-bundle/Console/Application.php(126): Symfony\Component\Console\Application->doRunCommand()
#22 /var/www/*****.com/vendor/symfony/console/Application.php(324): Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand()
#23 /var/www/*****.com/vendor/symfony/framework-bundle/Console/Application.php(80): Symfony\Component\Console\Application->doRun()
#24 /var/www/*****.com/vendor/symfony/console/Application.php(175): Symfony\Bundle\FrameworkBundle\Console\Application->doRun()
#25 /var/www/*****.com/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php(49): Symfony\Component\Console\Application->run()
#26 /var/www/*****.com/vendor/autoload_runtime.php(29): Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run()
#27 /var/www/*****.com/bin/console(11): require_once('...')
#28 {main}

还有其他人遇到过这个问题吗?我只是无法让它工作 - 除了删除数百页,这使得 get 调用工作。但由于我们需要该文档中的所有页面,因此这并不是一个真正可行的解决方法。

编辑1: 我试图到达这里的文件也不是很大。是的,它有很多页,但文件大小约为 550-600 KB。

google-drive-api google-docs google-api-php-client google-workspace google-docs-api
1个回答
0
投票

发现问题了。 我不知道为什么我在日志中看到 500 错误,这表明 Google 方面发生了错误,但在我这边,我必须将 php.ini 中的 default_socket_timeout 从 30 提高到更高的值。 就我而言,Google 的服务器需要大约 180 秒来响应,因此我现在将超时设置为 300。

© www.soinside.com 2019 - 2024. All rights reserved.