PHP Fatal error: Uncaught Exception: Serialization of 'Closure' is not allowed in /www/vendor/peppeocchi/php-cron-scheduler/src/GO/Job.php:161
Here is my code that is generating this error:
class Cron
{
private $container;
private $jobs;
public function __construct()
{
// initialize the container
$builder = new ContainerBuilder();
$builder->addDefinitions(APP_ROOT . '/boot/definitions.php');
$this->container = $builder->build();
}
public function run()
{
// load crontab
$this->jobs = $this->container->get('crontab');
if (!is_array($this->jobs) || count($this->jobs) === 0) {
return;
}
// load the scheduler
$scheduler = new Scheduler();
// process the crontab file
$classpath = '\\App\\Tasks\\';
foreach ($this->jobs as $i => $job) {
// init cron function
if (!array_key_exists('task', $job) || !array_key_exists('schedule', $job)) {
continue;
}
$class = "{$classpath}{$job['task']}";
if (!class_exists($class) || !is_a($class, '\\App\\Abstract\\AbstractTask', true)) {
continue;
}
$this->jobs[$i]['obj'] = new $class($this->container);
// add job to scheduler
$scheduler->call(
array($this->jobs[$i]['obj'], 'execute'),
)->at($job['schedule']);
}
// run the scheduler
$scheduler->run();
}
}
From what I can understand, the error arises when your code tries to generate a unique id for the job by serializing the callable array. The problem might be related to the fact that my object is stored with an array.
My suggestion is that using the uniqid function to generate job ids may be a safer approach.
For now, I am able to work around this error by passing in an id to the scheduler for each job.
I encountered the following error:
Here is my code that is generating this error:
From what I can understand, the error arises when your code tries to generate a unique id for the job by serializing the callable array. The problem might be related to the fact that my object is stored with an array.
My suggestion is that using the uniqid function to generate job ids may be a safer approach.
For now, I am able to work around this error by passing in an id to the scheduler for each job.