En PhalconPHP al igual que otros frameworks podemos crear una tarea programada o cron que se ejecuta dentro del propio framework. Vamos con los primeros pasos.

Crear el archivo cli.php en la carpeta app. Además ya se va a meter en ese archivo la injección de la db para poder hacer queries y el registro de la carpeta models. Así evitamos el fallo si hacemos un consulta y no tenemos el servicio inyectado. El fallo que podrías ver es:

Service 'db' wasn't found in the dependency injection container

El archivo cli.php

<?php
use Phalcon\Di\FactoryDefault\Cli as CliDI;
use Phalcon\Cli\Console as ConsoleApp;
use Phalcon\Loader;

// Using the CLI factory default services container
$di = new CliDI();

/**
 * Register the autoloader and tell it to register the tasks directory
 */
$loader = new Loader();

$loader->registerDirs(
    [
        __DIR__ . '/tasks',
        __DIR__ . '/models'
    ]
);

$loader->register();

// Load the configuration file (if any)
$configFile = __DIR__ . '/config/config.php';

if (is_readable($configFile)) {
    $config = include $configFile;

    $di->set('config', $config);
}

// Create a console application
$console = new ConsoleApp();

$console->setDI($di);

/**
 * Database connection is created based in the parameters defined in the configuration file
 */
$di->setShared('db', function () {
    $config = $this->getConfig();

    $class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
    $params = [
        'host'     => $config->database->host,
        'username' => $config->database->username,
        'password' => $config->database->password,
        'dbname'   => $config->database->dbname,
        'charset'  => $config->database->charset
    ];

    if ($config->database->adapter == 'Postgresql') {
        unset($params['charset']);
    }

    $connection = new $class($params);

    return $connection;
});

/**
 * Process the console arguments
 */
$arguments = [];

foreach ($argv as $k => $arg) {
    if ($k === 1) {
        $arguments['task'] = $arg;
    } elseif ($k === 2) {
        $arguments['action'] = $arg;
    } elseif ($k >= 3) {
        $arguments['params'][] = $arg;
    }
}

try {
    // Handle incoming arguments
    $console->handle($arguments);
} catch (\Phalcon\Exception $e) {
    // Do Phalcon related stuff here
    // ..
    fwrite(STDERR, $e->getMessage() . PHP_EOL);
    exit(1);
} catch (\Throwable $throwable) {
    fwrite(STDERR, $throwable->getMessage() . PHP_EOL);
    exit(1);
} catch (\Exception $exception) {
    fwrite(STDERR, $exception->getMessage() . PHP_EOL);
    exit(1);
}

Ahora dentro de app creamos una carpeta llamada tasks que será dónde podremos nuestra tarea para ejecutar. Aquí pongo un ejemplo.

<?php

use Phalcon\Cli\Task;


class MainTask extends Task
{
    public function mainAction()
    {
        $usuarios = Usuarios::find();
        foreach ($usuarios as $usuario) {
            echo $usuario->id;
        }
    }
}

Ahora para ejecutar la tarea, desde un terminal en la carpeta raiz del proyecto, ponemos lo siguiente:

 php app/cli.php Main main

Ahora ya puedes crear un cron desde la terminal de linux para ejecutarlo a la hora que quieras.