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


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;
          //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