【发布时间】:2015-01-22 19:48:12
【问题描述】:
我想将以下 pdo 语句排队以创建这样的数据库:
Queue::push(function($job, $dbname){
$dbh = new PDO("mysql:host=".getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'));
$dbh->exec("CREATE DATABASE `$dbname` CHARACTER SET=utf8 COLLATE=utf8_unicode_ci;
GRANT ALL ON `$dbname`.* TO 'xxx'@'%';
FLUSH PRIVILEGES;");
unset($dbh);
Log::useFiles(storage_path().'/logs/databasecreated');
Log::info('database created: '.$dbname);
$job->delete();
});
但它会抛出
'缺少 Jeremeamia\SuperClosure\SerializableClosure::{closure}() 的参数 2
当尝试运行 php artisan queue:work 时
$dbname
设置为
$dbname = $this->getDbName();
并且整个代码驻留在一个类的函数中。
我也尝试在闭包中直接使用$this->getDbName() 和$this->dbName,但这自然是行不通的。
这样的命令不能在队列中运行吗?
【问题讨论】:
标签: php laravel queue laravel-5