Download the PHP package stackkit/laravel-google-cloud-tasks-queue without Composer

On this page you can find all versions of the php package stackkit/laravel-google-cloud-tasks-queue. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-google-cloud-tasks-queue

Cloud Tasks Queue Driver for Laravel

Run tests
Latest Stable Version
Downloads

This package allows you to use Google Cloud Tasks as the queue driver in your Laravel application.

Companion packages: Cloud Scheduler, Cloud Logging

Image

Requirements

This package requires Laravel 12 or 13.

Installation

Require the package via Composer:

Add a new queue connection to config/queue.php:

Set the appropriate environment variables:

If you're using Cloud Run:

If you're using App Engine:

Refer to the table below for descriptions of each value:

Environment Variable Description Example
CLOUD_TASKS_PROJECT The project your queue belongs to. my-project
CLOUD_TASKS_LOCATION The region where the project is hosted. europe-west6
CLOUD_TASKS_QUEUE The default queue to which a job will be added. emails
App Engine
APP_ENGINE_TASK (optional) Set to true to use an App Engine task (otherwise an HTTP task will be used). Defaults to false. true
APP_ENGINE_SERVICE (optional) The App Engine service that will handle the task (only if using App Engine tasks). api
Non-App Engine Apps
CLOUD_TASKS_SERVICE_EMAIL (optional) The service account's email address. It must have the required roles (see below). [email protected]
CLOUD_TASKS_HANDLER (optional) The URL that Cloud Tasks will call to process a job. Should point to your Laravel app. Defaults to the URL that dispatched the job. https://<your-website>.com

Optionally, you may publish the config file:

If you're using separate services for dispatching and handling tasks, and your app should only dispatch jobs (not handle them), you may disable the task handler in config/cloud-tasks.php:

Cloud Run Jobs

If you want jobs to be processed by Cloud Run Jobs instead of HTTP endpoints, you can configure the queue to trigger Cloud Run Job executions.

Why Cloud Run Jobs?

Cloud Run Jobs are ideal for long-running batch processing that exceeds Cloud Tasks HTTP timeout limits.

Cloud Run Jobs can run for up to 7 days.

Tip: Use seperate queue connections with different targets, for low latency jobs, use HTTP targets, for longer running batch jobs use Cloud Run Jobs.

Setup

  1. Create a Cloud Run Job with your Laravel application container, configured to run:

The command reads job data from environment variables passed to the Job by Cloud Run.

  1. Configure your queue connection:

Note: The command reads CLOUD_TASKS_PAYLOAD, CLOUD_TASKS_TASK_NAME, and CLOUD_TASKS_PAYLOAD_PATH directly from environment variables at runtime using getenv(). These are set automatically by Cloud Tasks via container overrides.

  1. Set environment variables:

Large Payload Storage

For jobs with payloads exceeding environment variable limits (32KB limit enforced by Cloud Run), configure a Laravel filesystem disk:

When the payload exceeds the threshold, it's stored in the disk and CLOUD_TASKS_PAYLOAD_PATH is used instead.

Note: The payloads will not be cleared up automatically, you can define lifecycle rules for the GCS bucket to delete old payloads.

How It Works

When you dispatch a job with Cloud Run Job target enabled:

  1. Package creates a Cloud Task with HTTP target pointing to Cloud Run Jobs API
  2. Cloud Tasks calls run.googleapis.com/v2/.../jobs/{job}:run
  3. Cloud Run Jobs starts a new execution with environment variables set via container overrides:
    • CLOUD_TASKS_PAYLOAD - Base64-encoded job payload
    • CLOUD_TASKS_TASK_NAME - The task name
  4. The container runs php artisan cloud-tasks:work-job which reads the env vars and processes the job

All Laravel queue functionality is retained:

Required IAM Permissions

Cloud Run Jobs requires specific IAM permissions. Set these variables first:

Note: Find your Cloud Tasks service agent email in the IAM console under "Include Google-provided role grants". Note: Project ID and Project Number are different. Project ID is the name of your project, Project Number is the numeric ID of your project.

Project-Level Permissions:

Note: To restrict access to specific Cloud Run instances, use IAM conditions to limit access to specific Cloud Run Jobs / services.

Service Account Permissions:

Permission Required By Purpose
cloudtasks.enqueuer PHP App Add tasks to the queue
cloudtasks.viewer Cloud Run Job List queues/tasks (optional)
run.jobsExecutorWithOverrides Cloud Task Execute jobs with container overrides
run.invoker Other Workloads Invoke Cloud Run Services (if using HTTP targets)
iam.serviceAccountUser (on SA) Both Allow SA to create tasks as itself
iam.serviceAccountUser (Tasks Agent) Google Infrastructure Generate OAuth tokens for Cloud Run

How-To

Pass headers to a task

You can pass headers to a task using the setTaskHeadersUsing method on the CloudTasksQueue class:

You can also access the payload being dispatched:

Configure the task handler URL

Set the handler URL for a task using the configureHandlerUrlUsing method:

Or access the job being dispatched:

Configure worker options

Customize worker options using the configureWorkerOptionsUsing method:

Use a custom credentials file

Edit the client_options key in config/cloud-tasks.php:

Modify CloudTasksClient options

Edit the client_options key in config/cloud-tasks.php:

How it works & differences

Using Cloud Tasks as a Laravel queue driver is fundamentally different from other drivers like Redis.

With Redis or similar drivers, a worker listens for jobs via queue:work or queue:listen.
With Cloud Tasks, jobs are scheduled and dispatched via HTTP requests to your app.
There’s no need to run queue:work or queue:listen.

Good to Know

Cloud Tasks has its own retry configuration options like:

These are ignored by this package. Instead, you can configure retry behavior directly in Laravel.

Authentication

If you're not using your master service account (which has all abilities), assign the following roles to your service account to make it working:

  1. App Engine Viewer
  2. Cloud Tasks Enqueuer
  3. Cloud Tasks Viewer
  4. Cloud Tasks Task Deleter
  5. Service Account User

Upgrading

See UPGRADING.MD for instructions on updating versions.

Troubleshooting

HttpRequest.url must start with https://

This can occur when your application runs behind a reverse proxy.
To resolve it, add your app’s domain to Laravel’s trusted proxies.
You may need to use the wildcard *.

Maximum call stack size (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?

This seems to be a bug in PHP 8.3 and googleapis/gax-php.
See this issue for details.

A possible workaround is to disable the PHP 8.3 stack limit in php.ini:

Contributing

You can use the services defined in docker-compose.yml to run the package locally.

Inside the container:

  1. Run composer install
  2. Set up the environment: cp .env.example .env

Some tests use the Cloud Tasks API and require a project and credentials.
Set the appropriate variables in your .env.


All versions of laravel-google-cloud-tasks-queue with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
ext-json Version *
google/cloud-tasks Version ^2.0
thecodingmachine/safe Version ^3.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package stackkit/laravel-google-cloud-tasks-queue contains the following files

Loading the files please wait ...