Способ получить доступ к облачному хранилищу из приложения 2 при каждом обновлении облачного хранилища:
- Создать в приложении конечную точку, которая будет инициировать процесс чтения файлов.,Поскольку вы будете внутри PHP, используйте PHP Cloud Storage libs .
импортируйте lib:
composer require google/cloud-storage
Общий код для загрузки CloudОбъекты хранения :
use Google\Cloud\Storage\StorageClient;
/**
* Download an object from Cloud Storage and save it as a local file.
*
* @param string $bucketName the name of your Google Cloud bucket.
* @param string $objectName the name of your Google Cloud object.
* @param string $destination the local destination to save the encrypted object.
*
* @return void
*/
function download_object($bucketName, $objectName, $destination)
{
$storage = new StorageClient();
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
$bucketName, $objectName, basename($destination));
}
Создайте
Облачную функцию , которая будет работать в фоновом режиме и активироваться при выполнении обновления в облачном хранилище (запускаемом облачным хранилищем), вы можете указать, вызвано ли событие из-за какого-либо объекта:созданный, удаленный, заархивированный или обновленный (обновление метаданных), но имейте в виду, что вам придется создавать скрипт с использованием Go, Nodejs или Python.
Сценарий будет вызывать вашу конечную точку в приложении 2:
import requests
def hello_gcs(event, context):
"""Triggered by a change to a Cloud Storage bucket.
Args:
event (dict): Event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
file = event
url = 'https://app2.appspot.com/'
response = requests.get(url)
print(f"call made.")
print(f"Processing file: {file['name']}.")
Не забудьте добавить зависимость «запросов» на вкладку «needs.txt» из функций Cloud ConsoleGUI.
Вы можете сделать это взаимодействие настолько простым или сложным, насколько пожелаете, преимущество в том, что «синхронизация» происходит только тогда, когда происходят изменения в корзине Cloud Storage, а не каждую минуту, как вы делаете в настоящее время с Cron.работа.