【问题标题】:PHP artisan command run error in laravel4Laravel4中的PHP工匠命令运行错误
【发布时间】:2016-04-10 16:21:14
【问题描述】:

我的项目是用 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?

我怎样才能修复它以运行没有任何问题?

【问题讨论】:

    标签: php mongodb laravel laravel-4 laravel-artisan


    【解决方案1】:

    我认为您应该确保 $trip_id 中的值有效。

    例如你使用:

    $trip_id = explode('|', $key);
    $trip_id = $trip_id[1];
    

    你确定你应该在这里使用索引1而不是0吗?

    【讨论】:

    • 如果我输入 0 。你觉得问题会解决吗?
    • @Amiraliroshanaei 我真的不知道你在 Redis 中到底有什么以及你在$trip_id 中得到了什么——你应该逐步验证你实际获得了什么数据
    • 在 $trip_id 中,我采用像 568cceddbc919a427e8b4764 这样的 mongoid 并在 redis 中:我的项目驱动程序存在于队列中,并且使用 redis 我将最近的驱动程序带到乘客
    【解决方案2】:

    我认为您正在尝试将 "" 保存为数据库中的密钥。

    做一件事:-

    在你的php.ini

    将 mongo.allow_empty_keys 设置为 true

    愿这个link 对您有所帮助。

    【讨论】:

    • 好的。我使用debian服务器,然后我进入/etc/php5/apache2/php.ini,然后我写了set mongo.allow_empty_keys to true,然后我重新启动了我的apache服务。但我得到了同样的错误
    • 如果你是ubuntu用户,那么写这个命令就知道加载了哪个php.ini文件。须藤 php -i | grep '配置文件'
    猜你喜欢
    • 2017-07-29
    • 2013-06-13
    • 1970-01-01
    • 2023-04-05
    • 2014-08-30
    • 2019-05-20
    • 2018-05-07
    • 2021-12-14
    • 2021-05-15
    相关资源
    最近更新 更多