Ben cronjobs yöneticisi olarak PDO ile Jobby kullanmaya çalışıyorum. Kapamama serileştirmek ve veritabanına eklemek için SuperClosure (Jobby tarafından da kullanıldı) kullandım. Sonra benim veritabanından tüm kayıtları almak ve jobby için iş olarak eklemeden önce kapatılması unseralize ama elde ettiğin:Jobby/SuperClosure çalışmıyor: "...: eval() 'd code" kapağını içeren dosya mevcut değil
kök @ testi:/home /.../ public_html/kamu #/usr/local/bin/php ./cron.php PHP Uyarı: Kapatmanın seri hale getirilmesi başarısız oldu: "/home/.../public_html/vendor/jeremeamia/SuperClosure/src/SerializableClosure.php(210) kapağını içeren dosya: eval() 'd kodu "mevcut değil. on line /home/.../public_html/vendor/jeremeamia/SuperClosure/src/SerializableClosure.php 117
Bildirim: kapanması Serile başarısız oldu: dosya kapatma içeren, "/home/.../ public_html/vendor/jeremeamia/SuperClosure/src/SerializableClosure.php (210): eval() 'd kodu' mevcut değil.$config = array( 'output' => ROOT_PATH . 'closure.log', 'debug' => 1, ); $jobby = new Jobby\Jobby($config); $serializer = new SuperClosure\Serializer(); $jobs = $model->getCronJobs(); foreach ($jobs as $job) { $job = array_filter($job); try { $job['closure'] = $serializer->unserialize($job['closure']); unset($job['command']); } catch (SuperClosure\Exception\ClosureUnserializationException $e) { } $jobName = $job[ 'name' ]; unset($job[ 'name' ]); unset($job[ 'id' ]); $jobby->add($jobName, $job); } $jobby->run();
Ya ben: İşte
benim kodudur hattında /home/.../public_html/vendor/jeremeamia/SuperClosure/src/SerializableClosure.phpyılında $model->getCronJobs();
aldığım:
array(1) {
[0]=>
array(23) {
["id"]=>
string(2) "11"
["name"]=>
string(9) "testzcron"
["command"]=>
string(1) " "
["closure"]=>
string(243) "C:32:"SuperClosure\SerializableClosure":197:{a:5:{s:4:"code";s: 102:"function() {
echo 'I\'m a function (' . date('Y-m-d H:i:s') . ')!' . PHP_EOL;
return true;
};";s:7:"context";a:0:{}s:7:"binding";N;s:5:"scope";N;s:8:"isStatic";b:0;}}"
["schedule"]=>
string(9) "* * * * *"
["mailer"]=>
string(4) "smtp"
["maxRuntime"]=>
NULL
["recipients"]=>
NULL
["smtpHost"]=>
NULL
["smtpPort"]=>
NULL
["smtpUsername"]=>
NULL
["smtpPassword"]=>
NULL
["smtpSender"]=>
string(15) "[email protected]"
["smtpSenderName"]=>
string(5) "Jobby"
["smtpSecurity"]=>
NULL
["runAs"]=>
NULL
["environment"]=>
NULL
["runOnHost"]=>
NULL
["output"]=>
NULL
["dateFormat"]=>
string(11) "Y-m-d H:i:s"
["enabled"]=>
string(1) "1"
["haltDir"]=>
NULL
["debug"]=>
string(1) "0"
}
}
log
Dosyadan'ı:
PHP Fatal error: Uncaught exception 'SuperClosure\Exception\ClosureUnserializationException' with message 'The closure did not unserialize to a SuperClosure.' in /home/.../public_html/vendor/jeremeamia/SuperClosure/src/Serializer.php:103
Stack trace:
#0 /home/.../public_html/vendor/hellogerard/jobby/src/BackgroundJob.php(233): SuperClosure\Serializer->unserialize('N;')
#1 /home/.../public_html/vendor/hellogerard/jobby/src/BackgroundJob.php(88): Jobby\BackgroundJob->runFunction()
#2 /home/.../public_html/vendor/hellogerard/jobby/bin/run-job(20): Jobby\BackgroundJob->run()
#3 {main}
thrown in /home/.../public_html/vendor/jeremeamia/SuperClosure/src/Serializer.php on line 103
:
object(Closure)#9 (0) {
}
ve bunu çağırdığınızda mükemmel çalışıyor:
$serializer->unserialize($job['closure']);
olduğunu
[email protected]:/home/.../public_html/public# /usr/local/bin/php cron.php
I'm a function (2016-04-13 11:46:52)!
bool(true)
$ serializer-> unserialize ($ job ['closure']); '? – magnetik
@magnetik Düzenleme eklendi :) – simivar