XF 2.2 How to make a cron-job ?


Well-known member
What i have now:

1. cron.xml

<?xml version="1.0" encoding="utf-8"?>
  <entry entry_id="lala" cron_class="Robert9\Thumber\Cron\RenewThumb" cron_method="renewThumb" active="1"><![CDATA[{"day_type":"dom","dom":[-1],"hours":[-1],"minutes":[30,40,50]}]]></entry>

This job has a name: lala
We have a class: Robert9\Thumber\Cron\RenewThumb
There we call a method: renewThumb

2. Cron class from above


namespace Robert9\Thumber\Cron;

class RenewThumb
    public static function renewThumb()
        $app = \XF::app();

        /** @var Robert9\Thumber\Job\Thumbnail */
            'thThumberRenew' . uniqid(),

We set an "app" = something that works?
We give it a unique name, then we say go and use the class Robert9\Thumber\Job\Thumbnail

3. Because this is a longer job, we use AbstractRebuildJob; idea: walk tru with $start and $batch
this needs three methods: getNextIds, rebuildById and getStatusType


namespace Robert9\Thumber\Job;

use XF\Job\AbstractRebuildJob;
// the class called by cron.xml
class Thumbnail extends AbstractRebuildJob
    protected function getNextIds($start, $batch)
        $db = $this->app->db();
// for testing i want 1 not 100 as $batch!
        $batch = 1;
        return $db->fetchAllColumn($db->limit(
        fetch one/some ids

            ", $batch
        ), $start);

Here i have checked the result, it was "117" like i want to have it, but now
the machine just should send this "117" to rebuildById($id), but it never comes to this method!

If return $db-> has a value (here "117"; it should automatically call rebuildById(117), right?
But the script never reaches my next BREAKPOINT in PHPSTORM with XDEBUG.

protected function rebuildById($id)
    $resource = \XF::finder('XF:ResourceItem')->whereId($id)->fetchOne();
[BREAKPOINT] $b = $resource;
    // fetch the thumb by url
    do more


Maybe it is a problem, that i return one and not 100 values?

Because in the next round $start is still 0
Last edited: