Tina4 Services

Tina4 includes a way to define services that will run in the background. This allows you to execute code while without having to define CRON jobs.

Let's create a service that sends messages. I'll outline the service bit here. Have a look at Sending Email messages with Tina4 for more information about sending email.

Ensure your composer.json includes this line: “tina4service”: “@php bin/tina4service”,

Define your First Service

<?php


class MessengerProcess extends \Tina4\Process implements \Tina4\ProcessInterface 
{

    public string $name = "My Service";

    function run () 
    {
        echo "Sending Messages";
        $messages = (new MessageQueue)->load();
        
        foreach ($messages as $message)
        {
          // Send messages
        }


    }

    function canRun(): bool
    {
       $haveMessages = (New MessageQueue)->load();
   
       
       if ($haveMessages)
       {
          //We have email messages queued, let the task run
          return true;
       }
       else
       {
          //We have no messages queued
          return false;
       }
}

Queue the Service Process

$service = (new Tina4\Service);
$service->addProcess(new MessengerProcess("My Process"));

Remove the Service Process from the Queue

(new Tina4\Service)->removeProcess("My Process");

Start Tina4Service

You need to add execute permissions on Linux for the tina4service to allow it to execute from the project folder.

Change the permissions for bin/tina4service in your project directory

chmod +x bin/tina4service

Start the Service

composer start-service > service.log & 
Powered by ComboStrap