PHP Mongo DB удаляет процесс остановки без ошибок

0

Я пытаюсь избавиться от документа от _id, но процесс PHP останавливается без ошибок и не access.log ошибок в access.log, и нет вывода, если я назначаю переменную remove(). Использование mongodb: version v2.4.9

    $connection = new MongoClient();
    if($connection == NULL) {
        return "some msg";
    }
    $db = $connection->main;
    $collection = $db->users;
    $document = $collection->findOne(array('email' => $user->email));
    if($document == NULL) {
        // do some stuff, works fine.
    } else {
        $id = $document["_id"];
        echo "id=".$id                            // outputs: 5469a22600a8ebe8418b4567
        if($document["confirm"] != "true") {
            echo "confirmed not true"             // outputs fine
            $collection->remove(array('_id' => new MongoId($id)), true);
            echo "hello!";                        // never occurs
        }
    }

EDIT: Я пробовал это, и нет вывода:

            try { 
                $collection->remove(array('_id' => new MongoId($id)), true);
            } catch(Exception $e) {
                echo $e->getMessage();
            }

EDIT: Я нашел ответ, но я не понимаю ответа, потому что каждый пример, который я видел, включает в себя true аргумент. Поэтому я не буду сам отвечать на этот вопрос и оставлять его эксперту.

Это не работает:

$collection->remove(array('_id' => new MongoId($id)), true);

Это не работает:

$collection->remove(array('_id' => new MongoId($id)), false);

Это работает:

$collection->remove(array('_id' => new MongoId($id)));
  • 0
    Вы убедились, что включили php error_reporting и задали метод журнала (в файл или на экран) для процесса PHP?
  • 0
    Да, с помощью этого скрипта я получаю обычные ошибки PHP в моем файле error.log, если я пропускаю точку с запятой и т. Д., Я постоянно отслеживаю это
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Я могу объяснить вашу проблему, но я не могу объяснить, почему вы не видите ошибки, должно быть что-то странное в вашей настройке PHP.

В любом случае, почему ваше boolean значение только для второго параметра не работает: это потому, что драйвер PHP ожидает массив: http://php.net/manual/en/mongocollection.remove.php примеры, с которыми вы работали, были либо невероятно старым (так как произошло изменение 1.0.5 http://php.net/manual/en/mongocollection.remove.php#refsect1-mongocollection.remove-changelog) или неверно.

  • 0
    Ах, я вижу, что все остальные страницы были старыми, и я неправильно прочитал эту статью - 4-летний комментарий внизу поставил меня неправильно. Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню