PHP artisan 命令 运行 laravel4 中的错误
PHP artisan command run error in laravel4
我的项目是用 Laravel4 和 mongoDB 创建的。
我用 laravel artisan 创建了一个命令,并在 Laravel 中使用这个命令 php artisan taxi:checktrips
来检查行程。 Laravel 中的此命令运行:
public function schedule(Schedulable $scheduler)
{
return $scheduler->everyMinutes(.06);
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
while (true) {
try {
sleep(2);
foreach ($this->redis->keys('trip_id*') as $key) {
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
if ($this->driver->closest($trip_id)) {
echo 'Closest, Add trip_temp_id Redis';
$this->redis->set('trip_temp_id|'.$trip_id,
(int) $this->redis->get($key));
Log::importRedis('trip_temp_id|'.$trip_id, $trip_id);
}
echo "{$trip_id}, Deleted Redis";
$this->redis->del($key);
Log::exportRedis($key, $trip_id);
}
foreach ($this->redis->keys('trip_temp_id*') as $key) {
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
if (\Carbon\Carbon::now()->timestamp > (int) $this->redis->get($key)) {
echo 'Deleting Temp Redis';
$this->redis->del($key);
Log::exportRedis($key, $trip_id);
$this->driver->rejectTrip($trip_id);
}
}
} catch (\Exception $e) {
Log::errorLog([
'file' => $e->getFile(),
'line' => $e->getLine(),
'code' => $e->getCode(),
'message' => $e->getMessage(),
'trace' => $e->getTrace(),
'trace_string' => $e->getTraceAsString(),
'previous' => $e->getPrevious(),
]);
}
}
}
}
但是当我执行时显示:
[MongoException]
zero-length keys are not allowed, did you use $ with double quotes?
我怎样才能毫无问题地将其修复为 运行?
我认为您应该确保 $trip_id
.
中的值有效
例如你使用:
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
你确定你应该在这里使用索引 1
而不是 0
吗?
我认为您正在尝试将 ""
保存为数据库中的键。
做一件事:-
在你的php.ini
,
set mongo.allow_empty_keys to true
希望这篇link对你有所帮助。
我的项目是用 Laravel4 和 mongoDB 创建的。
我用 laravel artisan 创建了一个命令,并在 Laravel 中使用这个命令 php artisan taxi:checktrips
来检查行程。 Laravel 中的此命令运行:
public function schedule(Schedulable $scheduler)
{
return $scheduler->everyMinutes(.06);
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
while (true) {
try {
sleep(2);
foreach ($this->redis->keys('trip_id*') as $key) {
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
if ($this->driver->closest($trip_id)) {
echo 'Closest, Add trip_temp_id Redis';
$this->redis->set('trip_temp_id|'.$trip_id,
(int) $this->redis->get($key));
Log::importRedis('trip_temp_id|'.$trip_id, $trip_id);
}
echo "{$trip_id}, Deleted Redis";
$this->redis->del($key);
Log::exportRedis($key, $trip_id);
}
foreach ($this->redis->keys('trip_temp_id*') as $key) {
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
if (\Carbon\Carbon::now()->timestamp > (int) $this->redis->get($key)) {
echo 'Deleting Temp Redis';
$this->redis->del($key);
Log::exportRedis($key, $trip_id);
$this->driver->rejectTrip($trip_id);
}
}
} catch (\Exception $e) {
Log::errorLog([
'file' => $e->getFile(),
'line' => $e->getLine(),
'code' => $e->getCode(),
'message' => $e->getMessage(),
'trace' => $e->getTrace(),
'trace_string' => $e->getTraceAsString(),
'previous' => $e->getPrevious(),
]);
}
}
}
}
但是当我执行时显示:
[MongoException]
zero-length keys are not allowed, did you use $ with double quotes?
我怎样才能毫无问题地将其修复为 运行?
我认为您应该确保 $trip_id
.
例如你使用:
$trip_id = explode('|', $key);
$trip_id = $trip_id[1];
你确定你应该在这里使用索引 1
而不是 0
吗?
我认为您正在尝试将 ""
保存为数据库中的键。
做一件事:-
在你的php.ini
,
set mongo.allow_empty_keys to true
希望这篇link对你有所帮助。