Home Backend Development PHP Tutorial Asynchronous tasks and scheduling using PHP and Google Cloud Tasks

Asynchronous tasks and scheduling using PHP and Google Cloud Tasks

Jun 25, 2023 pm 12:51 PM
php programming google cloud tasks Asynchronous task implementation

Whether it is an online application or an offline processing task, asynchronous task processing and scheduling are very important for web applications that handle various tasks. In order to better manage tasks, keep web applications scalable, and improve application performance, we must rely on asynchronous task processing and scheduling.

Google Cloud Tasks is a fully managed service that makes it easy to perform periodic and asynchronous tasks through API calls. This article will show you how to implement asynchronous tasks and scheduling using PHP and Google Cloud Tasks. We'll learn how to set up Google Cloud Tasks and how to use task queues.

Before we begin, we need to install the Google Cloud SDK, set up Google Cloud Tasks, and create a Google Cloud Project to use the service.

Install Google Cloud SDK

Google Cloud SDK is a command line tool commonly used to manage and run cloud resources. You can use the following command to install the Google Cloud SDK:

curl https://sdk.cloud.google.com | bash
Copy after login

During the installation process, you need to follow the on-screen prompts and enter your Google account information.

Set up Google Cloud Tasks

Next, we need to set up Google Cloud Tasks. In Cloud Tasks, a task consists of three key elements: task queue, task, and executor.

A task queue is a resource with a specific name that allows you to place new tasks. Task queue names are globally unique.

A task is a descriptive object that you create and add to the task queue.

The executor is the actual code called when the task runs, usually located in your web application.

In this tutorial we will use the following values:

  • Project ID: my-project-id
  • Task Queue ID: my-queue
  • Cloud function URL: https://us-central1-my-project-id.cloudfunctions.net/processTask

Now, let’s quickly set up Cloud Tasks.

  1. First, we need to enable the task API for Cloud Tasks. In the Cloud Console, select the project from which you want to configure Cloud Tasks and go to APIs & Services > Libraries. Type "Cloud Tasks API" in the search box and click Cloud Tasks API to enable it.
  2. Next, we need to create a task queue. We can use the following gcloud command:
gcloud tasks queues create my-queue
Copy after login

This command will create a task queue named my-queue. If you use other services, such as App Engine or Cloud Functions, you can bind them to this queue to facilitate processing of tasks.

  1. Create an execution program. In this tutorial, we will use Cloud Functions as the executor. Therefore, we need to create a Cloud function.

In the Cloud Console, select the project from which you want to configure Cloud Functions and go to Cloud Functions. Click Create Function and enter the name "processTask" for the new function.

We will use the following Cloud function code:

<?php

use GoogleCloudStorageStorageClient;
use GoogleCloudLoggingLoggingClient;

function processTask($data, $context)
{
    $bucket = 'my-bucket';

    $logging = new LoggingClient(['projectId' => 'my-project-id']);
    $logger = $logging->psrLogger('my-logger');

    $logger->info('Starting task', ['data' => $data]);

    $storage = new StorageClient(['projectId' => 'my-project-id']);
    $bucket = $storage->bucket('my-bucket');

    // TODO: Process the task

    $logger->info('Task completed successfully.');
}
Copy after login

This function requires access to Google Cloud Storage, therefore, we also need to grant it access. In the Cloud Console, go to Storage > Browse. Next, click Create Bucket, select standard storage for the new bucket and type the name "my-bucket".

In the bucket tab, click "Permissions". Select "Add Entity" to add the program "cloud-tasks@cloudtasks.googleapis.com" permission to the service. Under Select a role, in the Role drop-down list, select Cloud Tasks Task Performer.

Now the Cloud Function is ready to use task sharing code.

  1. Create tasks. We can now create tasks for the task queue. We will use the following gcloud command:
gcloud tasks create-http-task 
    --queue=my-queue 
    --url=https://us-central1-my-project-id.cloudfunctions.net/processTask 
    --http-method=POST 
    --body='{"message":"hello world"}'
Copy after login

Using the above gcloud command, we will create a POST request in JSON format with the "message" attribute set to "hello world". This task will be added to the my-queue queue.

This is the complete setup for getting Cloud Tasks.

Loading Cloud Tasks using PHP

Now that we have the settings for Cloud Tasks, let’s load Cloud Tasks using PHP. Google provides an official PHP package called google/cloud-tasks. You can install it using Composer:

composer require google/cloud-tasks
Copy after login

Now we can write the PHP code to create the task and add it to the task queue. Let's look at the following example:

<?php

require_once __DIR__ . '/vendor/autoload.php';

use GoogleCloudTasksV2CloudTasksClient;
use GoogleCloudTasksV2HttpMethod;
use GoogleCloudTasksV2Queue;
use GoogleCloudTasksV2Task;
use GoogleProtobufDuration;

$projectId = 'my-project-id';
$location = 'us-central1';
$queueId = 'my-queue';

$cloudTasksClient = new CloudTasksClient();

$queueName = $cloudTasksClient->queueName($projectId, $location, $queueId);
$queue = new Queue();
$queue->setName($queueName);

$taskName = $cloudTasksClient->taskName($projectId, $location, $queueId, uniqid());
$task = new Task();
$task->setName($taskName);

$taskHttpReq = new GoogleCloudTasksV2HttpRequest();
$taskHttpReq->setUrl('https://us-central1-my-project-id.cloudfunctions.net/processTask');
$taskHttpReq->setHttpMethod(HttpMethod::POST);

$taskHttpReq->setBody(json_encode(['message' => 'hello world']));
$task->setHttpRequest($taskHttpReq);

$delay = new Duration();
$delay->setSeconds(10);
$task->setScheduleTime($delay);

$cloudTasksClient->createTask($queue, $task);

$cloudTasksClient->close();
Copy after login

This code will create a task queue named "my-queue". Next, it creates a task and adds it to the queue. The task contains the URL, HTTP method and data body of the POST request.

The task also contains a scheduled time so that the task will be executed after 10 seconds.

Finally, we use the "createTask" method to add the task to the queue.

Summary

This article shows you how to implement task scheduling and asynchronous task processing using PHP and Google Cloud Tasks. Cloud Tasks is a fully managed service that makes it easy to call APIs that perform periodic and asynchronous tasks. We set up a Cloud function, created a task queue, and added tasks to the queue using PHP.

In actual applications, more complex functions and services may be added, and more queues and tasks can be added as needed. However, this should give you a good starting point for integrating Google Cloud Tasks into your web application.

The above is the detailed content of Asynchronous tasks and scheduling using PHP and Google Cloud Tasks. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP format rows to CSV and write file pointer PHP format rows to CSV and write file pointer Mar 22, 2024 am 09:00 AM

This article will explain in detail how PHP formats rows into CSV and writes file pointers. I think it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. Format rows to CSV and write to file pointer Step 1: Open file pointer $file=fopen(&quot;path/to/file.csv&quot;,&quot;w&quot;); Step 2: Convert rows to CSV string using fputcsv( ) function converts rows to CSV strings. The function accepts the following parameters: $file: file pointer $fields: CSV fields as an array $delimiter: field delimiter (optional) $enclosure: field quotes (

PHP changes current umask PHP changes current umask Mar 22, 2024 am 08:41 AM

This article will explain in detail about changing the current umask in PHP. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. Overview of PHP changing current umask umask is a php function used to set the default file permissions for newly created files and directories. It accepts one argument, which is an octal number representing the permission to block. For example, to prevent write permission on newly created files, you would use 002. Methods of changing umask There are two ways to change the current umask in PHP: Using the umask() function: The umask() function directly changes the current umask. Its syntax is: intumas

PHP creates a file with a unique file name PHP creates a file with a unique file name Mar 21, 2024 am 11:22 AM

This article will explain in detail how to create a file with a unique file name in PHP. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. Creating files with unique file names in PHP Introduction Creating files with unique file names in PHP is essential for organizing and managing your file system. Unique file names ensure that existing files are not overwritten and make it easier to find and retrieve specific files. This guide will cover several ways to generate unique filenames in PHP. Method 1: Use the uniqid() function The uniqid() function generates a unique string based on the current time and microseconds. This string can be used as the basis for the file name.

PHP calculates MD5 hash of file PHP calculates MD5 hash of file Mar 21, 2024 pm 01:42 PM

This article will explain in detail about PHP calculating the MD5 hash of files. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. PHP calculates the MD5 hash of a file MD5 (MessageDigest5) is a one-way encryption algorithm that converts messages of arbitrary length into a fixed-length 128-bit hash value. It is widely used to ensure file integrity, verify data authenticity and create digital signatures. Calculating the MD5 hash of a file in PHP PHP provides multiple methods to calculate the MD5 hash of a file: Use the md5_file() function. The md5_file() function directly calculates the MD5 hash value of the file and returns a 32-character

PHP truncate file to given length PHP truncate file to given length Mar 21, 2024 am 11:42 AM

This article will explain in detail how PHP truncates files to a given length. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. Introduction to PHP file truncation The file_put_contents() function in PHP can be used to truncate files to a specified length. Truncation means removing part of the end of a file, thereby shortening the file length. Syntax file_put_contents($filename,$data,SEEK_SET,$offset);$filename: the file path to be truncated. $data: Empty string to be written to the file. SEEK_SET: designated as the beginning of the file

PHP returns an array with key values ​​flipped PHP returns an array with key values ​​flipped Mar 21, 2024 pm 02:10 PM

This article will explain in detail how PHP returns an array after key value flipping. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. PHP Key Value Flip Array Key value flip is an operation on an array that swaps the keys and values ​​in the array to generate a new array with the original key as the value and the original value as the key. Implementation method In PHP, you can perform key-value flipping of an array through the following methods: array_flip() function: The array_flip() function is specially used for key-value flipping operations. It receives an array as argument and returns a new array with the keys and values ​​swapped. $original_array=[

PHP returns the numeric encoding of the error message in the previous MySQL operation PHP returns the numeric encoding of the error message in the previous MySQL operation Mar 22, 2024 pm 12:31 PM

This article will explain in detail the numerical encoding of the error message returned by PHP in the previous Mysql operation. The editor thinks it is quite practical, so I share it with you as a reference. I hope you can gain something after reading this article. . Using PHP to return MySQL error information Numeric Encoding Introduction When processing mysql queries, you may encounter errors. In order to handle these errors effectively, it is crucial to understand the numerical encoding of error messages. This article will guide you to use php to obtain the numerical encoding of Mysql error messages. Method of obtaining the numerical encoding of error information 1. mysqli_errno() The mysqli_errno() function returns the most recent error number of the current MySQL connection. The syntax is as follows: $erro

PHP determines whether a specified key exists in an array PHP determines whether a specified key exists in an array Mar 21, 2024 pm 09:21 PM

This article will explain in detail how PHP determines whether a specified key exists in an array. The editor thinks it is very practical, so I share it with you as a reference. I hope you can gain something after reading this article. PHP determines whether a specified key exists in an array: In PHP, there are many ways to determine whether a specified key exists in an array: 1. Use the isset() function: isset($array[&quot;key&quot;]) This function returns a Boolean value, true if the specified key exists, false otherwise. 2. Use array_key_exists() function: array_key_exists(&quot;key&quot;,$arr

See all articles