|
10 | 10 | // * * * * * cd /path/to/project && php jobby-pdo.php 1>> /dev/null 2>&1 |
11 | 11 | // |
12 | 12 |
|
| 13 | +use Jobby\Jobby; |
| 14 | +use Opis\Closure\SerializableClosure; |
| 15 | +use Jobby\Exception; |
| 16 | + |
13 | 17 | require_once __DIR__ . '/../vendor/autoload.php'; |
14 | 18 |
|
15 | 19 | // The table, which shall contain the cronjob-configuration(s). |
|
53 | 57 | ) |
54 | 58 | "); |
55 | 59 |
|
56 | | -$insertCronJobConfiguration = $dbh->prepare(" |
57 | | -INSERT INTO `$dbhJobbiesTableName` |
58 | | - (`name`,`command`,`schedule`,`output`) |
59 | | - VALUES |
60 | | - (?,?,?,?) |
61 | | -"); |
| 60 | +$insertCronJobConfiguration = $dbh->prepare( |
| 61 | + "INSERT INTO `$dbhJobbiesTableName` (`name`,`command`,`schedule`,`output`) VALUES (?,?,?,?)" |
| 62 | +); |
62 | 63 | // First demo-job - print "date" to logs/command-pdo.log. |
63 | 64 | $insertCronJobConfiguration->execute( |
64 | 65 | ['CommandExample', 'date', '* * * * *', 'logs/command-pdo.log'] |
65 | 66 | ); |
66 | 67 | // Second demo-job - a Closure which does some php::echo(). The Closure is saved to PDO-backend, too. |
67 | | -$secondJobFn = function() { |
| 68 | +$secondJobFn = static function () { |
68 | 69 | echo "I'm a function (" . date('Y-m-d H:i:s') . ')!' . PHP_EOL; |
69 | 70 | return true; |
70 | 71 | }; |
71 | | -$serializer = new SuperClosure\Serializer(); |
72 | 72 |
|
73 | | -$secondJobFnSerialized = $serializer->serialize($secondJobFn); |
| 73 | +$wrapper = new SerializableClosure($secondJobFn); |
| 74 | +$secondJobFnSerialized = serialize($wrapper); |
74 | 75 | $insertCronJobConfiguration->execute( |
75 | 76 | ['ClosureExample', $secondJobFnSerialized, '* * * * *', 'logs/closure-pdo.log'] |
76 | 77 | ); |
|
81 | 82 | * Now, fetch all jobbies from PDO-backend and run them. |
82 | 83 | */ |
83 | 84 |
|
84 | | -$jobbiesStmt = $dbh->query("SELECT * FROM `$dbhJobbiesTableName`"); |
| 85 | +$jobbiesStmt = $dbh->query("SELECT * FROM `$dbhJobbiesTableName` WHERE enabled = 1"); |
85 | 86 | $jobbies = $jobbiesStmt->fetchAll(PDO::FETCH_ASSOC); |
86 | 87 |
|
87 | | -$jobby = new \Jobby\Jobby(); |
| 88 | +$jobby = new Jobby(); |
88 | 89 |
|
89 | 90 | foreach ($jobbies as $job) { |
90 | 91 | // Filter out each value, which is not set (for example, "maxRuntime" is not defined in the job). |
91 | 92 | $job = array_filter($job); |
92 | | - |
93 | | - try { |
94 | | - $job['closure'] = $serializer->unserialize($job['command']); |
95 | | - unset($job['command']); |
96 | | - } catch (SuperClosure\Exception\ClosureUnserializationException $e) { |
97 | | - } |
98 | | - |
| 93 | + $job['closure'] = unserialize($job['command']); |
99 | 94 | $jobName = $job['name']; |
100 | 95 | unset($job['name']); |
101 | | - $jobby->add($jobName, $job); |
| 96 | + try { |
| 97 | + $jobby->add($jobName, $job); |
| 98 | + } catch (Exception $e) { |
| 99 | + die($e->getMessage()); |
| 100 | + } |
102 | 101 | } |
103 | 102 |
|
104 | 103 | $jobby->run(); |
0 commit comments