Я загружаю файл из корзины облачного хранилища Google в папку Google Диска, используя php-код, который работает в фоновом режиме. Моя проблема в том, что когда размер файла увеличивается, Google Диск (или GAE) выдает ошибку 500.
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
Я использую следующую зависимость.
нао-пон/flysystem-google-диск: ^1.1,
Ниже приведена часть моего кода, которая дает эту ошибку. Это отлично работает для небольших файлов:
$fileN = $this->clean($att->ATT_TITLE);
$fileData = file_get_contents("https://storage.googleapis.com/xxxxxx/".$att->ATT_FILE);
$dir = sys_get_temp_dir();
$tmp = tempnam($dir, $fileN);
file_put_contents($tmp, $fileData);
Storage::cloud()->putFileAs( $folderPath, new File($tmp),$fileN);
Я установил конфигурации в файле .env
FILESYSTEM_CLOUD=google
GOOGLE_DRIVE_CLIENT_ID=xxxxapps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=xxxxx
GOOGLE_DRIVE_REFRESH_TOKEN=xxxxxx
GOOGLE_DRIVE_FOLDER_ID=xxxx
#GOOGLE_DRIVE_TEAM_DRIVE_ID=xxx
Я настроил диск, как показано ниже, в файле system.php.
'google' => [
'driver' => 'google',
'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'),
// 'teamDriveId' => env('GOOGLE_DRIVE_TEAM_DRIVE_ID'),
],
Я установил файл php.ini, как показано ниже.
upload_max_filesize = 300M
post_max_size = 300M
memory_limit = 3000M
App.yaml
runtime: php72
handlers:
- url: /assets
static_dir: public/assets
env_variables:
APP_KEY: xxxxx
APP_STORAGE: /tmp
CACHE_DRIVER: file
VIEW_COMPILED_PATH: /tmp
SESSION_DRIVER: database
DB_DATABASE: xxx
DB_USERNAME: xx
DB_PASSWORD: xxxx
DB_SOCKET: "/cloudsql/xxxxx"
runtime_config:
document_root: public
Может ли кто-нибудь дать мне подсказку или дать мне другой альтернативный способ сделать это? Мое требование в основном состоит в том, чтобы загрузить большой файл (например, 250 МБ) на Google Диск с помощью фонового задания в Google App Engine.