插入文档时达到Docdex ODM内存限制

时间:2017-05-10 13:51:27

标签: php mongodb symfony memory doctrine-orm

我有一点问题,我从json获得了大约800,000个数据,我正在尝试将它们插入到MongoDB数据库中。但是我做到这一点时达到了内存限制(我已将其设置为8GB用于测试)。我认为我的脚本没有优化,但我无法找到。你们能帮助我吗?这是脚本:

        $jsonResponse = json_decode($content->response);
        $datas = $jsonResponse->hits->hits;

        // On crée la collection si elle n'éxiste pas
        $collection = $connection->createCollection($table->getTableName(), false );

        // On enregistre les données dans la collection
        foreach ($datas as $data)
        {
            if(!empty($data) || $data)
            {
                $document['_id'] = $data->_id; // ID netwoof unique
                $document['_updated'] = substr($data->_source->_updated, 0, -3); // Date de dernière MàJ des données
                $document['_url'] = $data->_source->_url; // Start URL

                // On enregistre ensuite chaque champs définis dans le dashboard
                foreach ($fields as $field)
                {
                    // On récupère le nom du champs netwoof
                    $containerFieldName = $field->getContainerFieldName();

                    // On fait correspondre notre champ db avec celui netwoof
                    if( isset( $data->_source->$containerFieldName ) && (!empty($data->_source->$containerFieldName) || $data->_source->$containerFieldName == 0 ) )
                        $document[$field->getFieldName()] =  $data->_source->$containerFieldName;
                    /*else
                        $document[$field->getFieldName()] = null;*/

                }

                foreach ($customFields as $customField)
                {
                    if(!empty($customField->getFieldValue()))
                        $document[$customField->getFieldName()] = $customField->getFieldValue();
                }

                // Enregistrement des données
                $collection->save($document);
            }

            // On réinitialise la variable
            unset($document);
        }

感谢大家的回答,对不起我的英语。

0 个答案:

没有答案